我正在使用Delphi 2007来维护一个旧项目,我在从Class Reference变量访问类常量时遇到问题,我总是得到父类常量而不是子类常量.
假设有一个父类,一些子类,一个类引用,最后是一个const数组来存储类引用以进行循环.
看看以下简单的程序:
program TestClassConst;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TParent = class
const
ClassConst = 'BASE CLASS';
end;
TChild1 = class(TParent)
const
ClassConst = 'CHILD 1';
end;
TChild2 = class(TParent)
const
ClassConst = 'CHILD 2';
end;
TParentClass = class of TParent;
TChildClasses = array[0..1] of TParentClass;
const
ChildClasses: TChildClasses = (TChild1, TChild2);
var
i: integer;
c: TParentClass;
s: string;
begin
try
writeln;
writeln('looping through class reference array');
for i := low(ChildClasses) to high(ChildClasses) do begin
c := …Run Code Online (Sandbox Code Playgroud) 我在Delphi Detours库中有这个代码,我正在尝试移植:
type
TInstruction = record
Archi: Byte; { CPUX32 or CPUX64 ! }
AddrMode: Byte; { Address Mode }
Addr: PByte;
VirtualAddr: PByte;
NextInst: PByte; { Pointer to the Next Instruction }
OpCode: Byte; { OpCode Value }
OpType: Byte;
OpKind: Byte;
OpTable: Byte; { tbOneByte,tbTwoByte,... }
OperandFlags: Byte;
Prefixes: Word; { Sets of Prf_xxx }
...
end;
var
Inst: TInstruction;
begin
...
Inst := default (TInstruction); // <-
Inst.Archi := CPUX;
Pvt := PPointer(AIntf)^; // vTable !
PCode …Run Code Online (Sandbox Code Playgroud) procedure display;inline;
begin
showmessage('sakthi');
end;
procedure TFrmInline.BtnDisplayClick(Sender: TObject);
begin
display;
end;
Run Code Online (Sandbox Code Playgroud)
在这个程序中,如果我编译它显示错误"声明预期但内联发现".
我有一个使用Delphi 5.0构建的应用程序,工作正常,没有任何问题.但是当运行大型报表时,我的应用程序需要超过2 Gb的内存.做分析后发现,使用Compiler指令SETPEFlags我们可以将32位应用程序内存增加到4 GB.
我试图在我的程序中设置Delphi 5.0,但得到错误"无效的编译器指令".有人可以建议任何解决方法,而无需重建其他版本的应用程序.或者那些被添加到Delphi的版本?
提前致谢.
作为一个被困在旧版Delphi并最近升级到D2010的人,我认为我仍然使用D5时代的语言,RTL和VCL功能,并且不使用这些新功能,因为那些文件在某些方面是分散的.博客圈.所以我想问一下,如果有一个类似于Python的新文档的清单- 清晰简洁.
顺便说一句,请不要截屏.它们最近看起来相当丰富(可能是因为CodeRages),但我发现它们非常不直观.让我们把视频格式的文档留给RoR社区,我们应该:).
我们开始在学校学习Pascal使用Delphi 7(这是旧的一点点),当我检查维基百科和Delphi网站时,似乎有其他版本,最后一个在8月31日发布的是Delphi 10 Seattle.所以我的问题是我应该下载与我的学校(Delphi 7)相同的东西,或者如果我使用Delphi 10这是正常的吗?我可以将项目从Delphi 7导入Delphi 10,反之亦然吗?
有没有办法在不引发EAbort异常的情况下中止方法的执行?
这是一个问题:
....
try
i := strtoint(Edit1.Text);
if not (i=10) then
begin
showmessage('Value for I must be 10 !');
sysutils.abort;
end;
except
showmessage('Wrong Value for i !');
end;
showmessage('Execution continue ...');
...
Run Code Online (Sandbox Code Playgroud)
在这个示例中,如果i的值为5,程序执行将不会中止...它将显示消息"我必须为10的值!",然后消息"i的值错误!" (因为引发了EAbort异常)然后消息"Execution continue ...".我知道如何解决这种情况,但我需要没有EAbort异常的sysutils.abort的通用解决方案.