标签: delphi-2010

D2010编译了行数差异

构建项目时,有两个地方报告源行计数:

  1. 在编译进度对话框中
  2. 在项目| 信息

在Delphi 2007中,这两个数字对于我们正在构建的项目是相同的.

在Delphi 2010中,这两个数字截然不同.(1)计数大于100万行或40%.(第二)计数足够接近Delphi 2007计数,以满足正在构建的正确文件,以解释移植到D2010的代码更改.源文件的替代版本在构建环境中根本不存在.

所以问题是:

为什么D2010中的第一和第二行数量如此大不相同,因为它们在D2007中是可以理解的相同?

有关:

为什么从D2007到D2010的行数变化如此之大?

delphi line-count delphi-2010

11
推荐指数
1
解决办法
379
查看次数

有没有办法只跟踪Delphi中的项目源?

我正在使用Delphi 2010,我想知道是否有一种方法可以跟踪项目中的代码,而无需跟踪调用包含的VCL.

例如 - 您输入一个断点然后使用Shift+ F7来逐行跟踪.现在你在VCL中调用了一些冗长的过程 - 在我的例子中,它通常是一个Measurement Studio或其他组件,用于绘制一堆I/O,OPC或其他位的doodads.无论如何,发生的事情是调试器跳出活动源文件,打开组件源,并逐行跟踪.通常这是我不关心的数百或数千行代码 - 我只想让它执行并返回到MY项目中的下一个源代码行.

显然你可以通过在外部调用的每个实例周围设置断点来实现这一点,但通常有太多不能使其变得切实可行 - 每次我想要逐步执行一段代码时,我会花一小时设置一百个断点.

是否有设置或工具可以做到这一点?允许用户跟踪项目中的代码,同时静默执行项目外部的代码?

delphi debugging trace project delphi-2010

11
推荐指数
1
解决办法
2233
查看次数

为什么Delphi说"无法解析单位名称xxx"?

我正在使用Delphi2010 Enterprise Update 4.
当我在IDE中打开我的项目并显示mainform代码时,有2个单元名称以红色下划线.

xxx http://img268.imageshack.us/img268/6475/unitnameunresolved.png.

我已经验证了单位源的路径在Library path和中Browsing path.

令人惊讶的是,当我右键单击该单元并选择时Open file at cursor,它可以工作(即delphi打开正确的单元).

有什么想法吗?

ide delphi delphi-2010

11
推荐指数
1
解决办法
2万
查看次数

Delphi 2010 - 隐藏欢迎页面

有没有人知道如何在不使用<-np>命令行选项的情况下禁用欢迎页面,它非常烦人并且在每次启动时阻止IDE几秒钟,有人知道我在哪里可以配置它吗?

ide delphi delphi-2010

11
推荐指数
1
解决办法
1万
查看次数

将空窗口句柄传递给ShellExecute是否可以?

我有一个Delphi控制台应用程序,最终需要启动两个应用程序之一.

我遇到一些问题让ShellExecute无错误地工作,我认为问题与没有控制台应用程序的句柄有关.

引起我悲伤的一句话是:

ShellExecute(0, 'open', 'someapplication.exe', nil, nil, SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)

我认为句柄中的0是问题,因为它编译好并在调试器中运行OK,但如果我尝试运行可执行文件,我会得到一个未处理的错误(控制台应用程序认为它已经结束了).

delphi console shellexecute delphi-2010

11
推荐指数
1
解决办法
6101
查看次数

如何读取UTF8编码的INI文件?

我有一个UTF-8格式的INI文件.

我正在使用Delphi 2010读取INI文件并使用INI文件中的值填充TStringGrid.

var
  ctr : Integer;
  AppIni : TIniFile;
begin
  AppIni := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'test.ini');
    for ctr := 1 to StringGrid1.RowCount do begin
        StringGrid1.Cells[0,ctr] := AppIni.ReadString('Column1','Row'+IntToStr(ctr),'');
        StringGrid1.Cells[1,ctr] := AppIni.ReadString('Column2','Row'+IntToStr(ctr),'');
    end;
  AppIni.Free;
Run Code Online (Sandbox Code Playgroud)

问题是unicode字符出现在TStringGrid中,显示2个字符,而不是1个unicode字符.

我该如何解决这个问题?

delphi delphi-2010

11
推荐指数
1
解决办法
6980
查看次数

Delphi条件编译中的uses子句

我试图修改我的Delphi 2010代码以在XE7中编译(并希望保留在2010年编译它的能力).因此,在我的mainform的单元中,我添加了条件指令.以下工作在2010年正常

uses 
  {$IF CompilerVersion >= 24}System.Actions, {$ELSE}Actnlist,{$IFEND}
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,  Dialogs;
Run Code Online (Sandbox Code Playgroud)

但是XE7会自动System.Actions在最后添加一个用于创建一个uses子句,该子句现在已经声明了两次System.Actions(见下文),并给出了一条错误消息[dcc32 Error] MyForm.pas(10): E2004 Identifier redeclared: 'System.Actions'.为什么XE7不接受条件指令中的单位?

uses 
  {$IF CompilerVersion >= 24}System.Actions, {$ELSE}Actnlist,{$IFEND}
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,  Dialogs,
  System.Actions; // <- automatically added
Run Code Online (Sandbox Code Playgroud)

delphi conditional-compilation delphi-2010 delphi-xe7

11
推荐指数
2
解决办法
2093
查看次数

Delphi 2010:DockForm.pas在哪里?

我必须将旧的Delphi3项目升级到Delphi2010.

它使用一个名为DockForm的单元,但我在Delphi2010的任何地方都找不到它.

它作为uDockForm出现在旧的Delphi3安装光盘中,但它也应该在D2010中找到,因为自己的D2010源文件使用它(例如,\ Embarcadero\RAD Studio\7.0\source\ToolsAPI\ToolsApi.pas).

哪里是DockForm.pas或同等D2010?

谢谢

delphi delphi-2010

10
推荐指数
1
解决办法
9572
查看次数

构建多线程TCP/IP服务器

我想构建一个TCP/IP服务器,最多可以使用100个并发客户端,但仍然不知道如何开始.

至少我需要服务器这个:

  1. 收听客户端,并将它们存储在数组或列表中.
  2. 对于每个客户端,它需要根据客户端状态接收和发送数据.
  3. 当有人连接或断开连接时,服务器应更新客户端列表.
  4. 更喜欢使用GUI作为服务来管理它.

任何人都可以帮助如何开始,我看了indy样本,但他们没有帮助,也寻找大多数组件,但仍在搜索.

delphi tcp delphi-2010

10
推荐指数
1
解决办法
1万
查看次数

在TList <TMyObject>上实现过滤枚举器的更好方法

使用Delphi 2010,假设我有一个声明如下的类:

TMyList = TList<TMyObject>
Run Code Online (Sandbox Code Playgroud)

对于这个列表,Delphi为我们提供了一个枚举器,所以我们可以这样写:

var L:TMyList;
    E:TMyObject;
begin
  for E in L do ;
end;
Run Code Online (Sandbox Code Playgroud)

麻烦的是,我想写这个:

var L:TMyList;
    E:TMyObject;
begin
  for E in L.GetEnumerator('123') do ;
end;
Run Code Online (Sandbox Code Playgroud)

也就是说,我希望能够使用某些标准为同一列表提供多个枚举器.不幸的是,实现for X in Z需要存在一个函数Z.GetEnumerator,没有参数,返回给定的枚举器!为了解决这个问题,我正在定义一个实现"GetEnumerator"函数的接口,然后我实现了一个实现接口的类,最后我在TMyList上编写了一个返回接口的函数!而且我正在返回一个界面,因为我不想被手动释放非常简单的类所困扰......任何方式,这需要很多打字.这是这样的:

TMyList = class(TList<TMyObject>)
protected

  // Simple enumerator; Gets access to the "root" list
  TSimpleEnumerator = class
  protected
  public
    constructor Create(aList:TList<TMyObject>; FilterValue:Integer);

    function MoveNext:Boolean; // This is where filtering happens
    property Current:TTipElement;
  end;

  // Interface that will create the TSimpleEnumerator. Want this
  // to …
Run Code Online (Sandbox Code Playgroud)

delphi foreach filter enumerator delphi-2010

10
推荐指数
3
解决办法
1989
查看次数