小编Rol*_*son的帖子

如何将classname转换为类?

我在字符串列表中有类名.例如,它可能是'TPlanEvent','TParcel','TCountry'等.

现在我想通过循环列表找出大小.

它的作用是:

Size := TCountry.InstanceSize;
Run Code Online (Sandbox Code Playgroud)

但我希望这样:

for i := 0 to ClassList.Count - 1 do
  Size := StringToClass(ClassList[i]).InstanceSize;
Run Code Online (Sandbox Code Playgroud)

显然我的问题是编写什么而不是StringToClass方法来将字符串转换为类.

delphi delphi-2007

4
推荐指数
3
解决办法
7127
查看次数

在Delphi中优化包含的文件和用法

我尝试提高Delphi 2007和Codeinsight的性能.在应用程序中,DPR文件中添加了483个文件.

我不知道它是否是想象力但我觉得通过读取DPR中的所有文件,我从Codeinsight获得了更好的性能.

我也认为(如果我错了,请纠正我)所有包含在使用部分中的文件也应该包含在DPR文件中以获得最佳性能.

我的问题是,它是否存在一个扫描整个项目并列出DPR文件中缺少哪些文件以及哪些文件可以删除的工具?拥有可以在PAS文件中删除的用途列表也很不错.

我发现Pascal Analyzer似乎是一个很好的工具.在这种情况下特别评论这一点是值得赞赏的.

一个相关的问题在这里.

问候

delphi delphi-2007

4
推荐指数
1
解决办法
746
查看次数

使用多个键列进行搜索和删除的SQL

可能有点糟糕的标题,但我试着解释一下我的意思.

我使用这样的SQL来构建一个列表

SELECT id 
FROM parcel 
WHERE id IN (113715, 113824, 113855, 113954, 114010, 114116, 114272, 114329)
Run Code Online (Sandbox Code Playgroud)

其中,ID在被隔离是唯一的,非常简单的包裹表中的列.

但有些表使用许多列是唯一的.

SELECT id1, id2 
FROM trip 
WHERE id1, id2 IN ((113715, 113824), (113855, 113954), (114010, 114116),(114272, 114329))
Run Code Online (Sandbox Code Playgroud)

最后一个SQL显然不起作用.

我想选择行在哪里

id1 = 113715 and id2=113824 or
id1 = 113855 and id2=113954 or
id1 = 114010 and id2=114116 or
id1 = 114272 and id2=114329
Run Code Online (Sandbox Code Playgroud)

实际上,生成的SQL可以包含500 - 1000个ID.

我应该使用什么SQL?

编辑

这是一个生成的SQL.ID来自另一台服务器上的另一个数据库,因此无法进行JOIN.

sql sql-server

4
推荐指数
2
解决办法
111
查看次数

使用Windows 7更改了文件流的行为?

我编写了一个实用程序来搜索异常文件的日志文件,它在Vista 64位上运行良好.现在我已经升级到Windows 7 64位,有时在读取文件流时会永远挂起.我认为它只有在日志文件处于活动状态并且用户写入它时才会挂起.但是在我使用fmShareDenyNone标志之前,这样可以正常工作.我使用Delphi 2007.任何想法我可以改变以使其工作?

以下是搜索日志文件目录的整个方法:

procedure TfrmMain.Refresh;
var
  FileData : TSearchRec;  // Used for the file searching. Contains data of the file
  vPos, i, PathIndex : Integer;
  vCurrentFile: TStringList;
  vDate: TDateTime;
  vFileStream: TFileStream;
begin
  tvMain.DataController.RecordCount := 0;
  vCurrentFile := TStringList.Create;
  memCallStack.Clear;

  try
    for PathIndex := 0 to fPathList.Count - 1 do                      // Loop 0. This loops until all directories are searched through
    begin
      if (FindFirst (fPathList[PathIndex] + '\*.log', faAnyFile, FileData) = 0) then
      repeat                                                      // Loop 1. This loops …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2007

3
推荐指数
1
解决办法
776
查看次数

找到最大的空闲内存块

当碎片化时,有时会出现内存不足的问题.

是否有可能找到最大的可用内存块?我使用Delphi 2007和FastMM.在Windows 2003上运行应用程序的Windows XP上进行开发.

问候

编辑: 我可以在Windows Server 2003 x64上添加应用程序在具有32 GB内存的服务器上运行的信息.但该应用程序是一个32位应用程序,因此每个实例的理论最大分配内存为2 GB.许多实例立即运行.我认为总体物理记忆不是很少.我想在启动时应用程序获得了32位虚拟内存空间.这可能在运行时期间过于分散.

我还发现了FastGetHeapStatus方法,该方法返回一个THeapStatus,其中包含一些可用内存字段.也许我可以使用那些.

EDIT2: 我发现了这个如何获得最大的可用继续内存块.代码是C但也许可以翻译成Delphi.

delphi memory-management

3
推荐指数
1
解决办法
2149
查看次数

如何确保对话框始终位于主窗口的前面

我还没有找到最佳解决方案.我有一个非模态对话框,可以通过应用程序中的热键在无限制实例中打开.甚至对话框本身也可以打开一个新实例.我希望这些对话框始终位于主应用程序窗口的前面.我尝试过几件事.

  • 将FormStyle设置为fsStayOntop.这有效但有一个优点,即对话框将位于所有窗口的前面,甚至是其他应用程序.我只希望它在我的主窗口前面.
  • 将PopupMode设置为pmAuto.这也适用于一个对话框打开另一个对话框的情况.如果第一个对话框关闭,则会自动关闭第二个对话框.这是不可接受的.
  • 使用表单的默认属性.单击主窗口后,打开的对话框就在主窗口后面.

任何其他建议:-)

delphi dialog nonblocking delphi-2007

3
推荐指数
1
解决办法
2144
查看次数

我是否需要github才能拥有语言环境源控件?

我已经下载了Git和SmartGit,它似乎在本地运行良好.我们是团队中的几个成员,我们想要内部资源.目前我们使用Starteam,但我想转向更现代的rcs系统,如Git.是否有一个简单的指南如何在团队成员之间同步代码?我假设必须有一个代码重新定位,"决定"什么版本是正确的.

任何提示?

windows git

3
推荐指数
1
解决办法
599
查看次数

如何在64位窗口上更新调整大小的表单?

我有一个问题,在Windows Server 2003或2008等64位窗口中运行时,表单上的内容未更新正确.有一个简短的视频在截屏视频中说明了这一点.

当我调整主窗口的大小时,内容不会重新绘制.但如果我更换小分割器,它会重新粉刷.在32位Windows上,一切都很完美.我没有为此做过任何OnResize事件.

有任何想法吗 ?

编辑:是的,可执行文件是32位.它只是64位的Windows操作系统.

delphi 64-bit delphi-2007

3
推荐指数
1
解决办法
825
查看次数

为什么我得到E2356属性访问器必须是实例字段或方法

编译本单元时:

unit Test;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    class var StartDate, EndDate: TDateTime;   // Line 12
    fTest: TNotifyEvent;
  public
    property OnTest: TNotifyEvent read fTest;  // Line 15.
  end;

implementation

{$R *.dfm}

end.
Run Code Online (Sandbox Code Playgroud)

我得到以下编译器错误:

[DCC错误] Test.pas(15):E2356属性访问器必须是实例字段或方法

但是,如果我在第12行发表评论,它就会很好地编译.有人可以解释原因吗?我需要将日期作为类变量来存储日期间隔.

delphi delphi-2007

3
推荐指数
1
解决办法
818
查看次数

只使用 git 在当前目录中添加修改后的文件?

简单的问题。如何将当前目录中修改和跟踪的文件添加到存储库?

假设我有 3 个修改过的文件。

Utils/readme.txt
code/main.pas
code/feature.pas
Run Code Online (Sandbox Code Playgroud)

当前目录位于 code/ 中。所以我只想提交 main.pas 和 feature.pas 文件。

git version-control

3
推荐指数
1
解决办法
5400
查看次数