我在字符串列表中有类名.例如,它可能是'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 2007和Codeinsight的性能.在应用程序中,DPR文件中添加了483个文件.
我不知道它是否是想象力但我觉得通过读取DPR中的所有文件,我从Codeinsight获得了更好的性能.
我也认为(如果我错了,请纠正我)所有包含在使用部分中的文件也应该包含在DPR文件中以获得最佳性能.
我的问题是,它是否存在一个扫描整个项目并列出DPR文件中缺少哪些文件以及哪些文件可以删除的工具?拥有可以在PAS文件中删除的用途列表也很不错.
我发现Pascal Analyzer似乎是一个很好的工具.在这种情况下特别评论这一点是值得赞赏的.
一个相关的问题在这里.
问候
可能有点糟糕的标题,但我试着解释一下我的意思.
我使用这样的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.
我编写了一个实用程序来搜索异常文件的日志文件,它在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 2007和FastMM.在Windows 2003上运行应用程序的Windows XP上进行开发.
问候
编辑: 我可以在Windows Server 2003 x64上添加应用程序在具有32 GB内存的服务器上运行的信息.但该应用程序是一个32位应用程序,因此每个实例的理论最大分配内存为2 GB.许多实例立即运行.我认为总体物理记忆不是很少.我想在启动时应用程序获得了32位虚拟内存空间.这可能在运行时期间过于分散.
我还发现了FastGetHeapStatus方法,该方法返回一个THeapStatus,其中包含一些可用内存字段.也许我可以使用那些.
EDIT2: 我发现了这个如何获得最大的可用继续内存块.代码是C但也许可以翻译成Delphi.
我还没有找到最佳解决方案.我有一个非模态对话框,可以通过应用程序中的热键在无限制实例中打开.甚至对话框本身也可以打开一个新实例.我希望这些对话框始终位于主应用程序窗口的前面.我尝试过几件事.
任何其他建议:-)
我已经下载了Git和SmartGit,它似乎在本地运行良好.我们是团队中的几个成员,我们想要内部资源.目前我们使用Starteam,但我想转向更现代的rcs系统,如Git.是否有一个简单的指南如何在团队成员之间同步代码?我假设必须有一个代码重新定位,"决定"什么版本是正确的.
任何提示?
我有一个问题,在Windows Server 2003或2008等64位窗口中运行时,表单上的内容未更新正确.有一个简短的视频在截屏视频中说明了这一点.
当我调整主窗口的大小时,内容不会重新绘制.但如果我更换小分割器,它会重新粉刷.在32位Windows上,一切都很完美.我没有为此做过任何OnResize事件.
有任何想法吗 ?
编辑:是的,可执行文件是32位.它只是64位的Windows操作系统.
编译本单元时:
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行发表评论,它就会很好地编译.有人可以解释原因吗?我需要将日期作为类变量来存储日期间隔.
简单的问题。如何将当前目录中修改和跟踪的文件添加到存储库?
假设我有 3 个修改过的文件。
Utils/readme.txt
code/main.pas
code/feature.pas
Run Code Online (Sandbox Code Playgroud)
当前目录位于 code/ 中。所以我只想提交 main.pas 和 feature.pas 文件。
delphi ×7
delphi-2007 ×6
git ×2
64-bit ×1
dialog ×1
nonblocking ×1
sql ×1
sql-server ×1
windows ×1