我正在尝试将项目从 Delphi 4 移植到 Delphi XE2。我有shortstring
在项目中使用的要求。根据 Delphi 帮助,$H- 应该让编译器使用短字符串作为string
类型。我已经使用了这个指令,但我没有看到任何区别。我写了一个小测试程序:
program Stringtest;
{$APPTYPE CONSOLE}
{$R *.res}
{$H- }
uses
System.SysUtils;
var
str : string;
short : shortstring;
begin
try
str := 'testing';
short := 'testing';
Writeln('str ' +Format('%d', [sizeOf(str)]) );
Writeln('short ' +Format('%d', [sizeOf(short)]) );
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
在我看来,两者的输出应该相同str
,short
因为编译器应该将两者都视为shortstring
. 但大小为 4str
和 256 short
。有没有其他方法可以让编译器将源代码中的所有出现替换 string
为或者是唯一的解决方案?shortstring
string
shortstring