Я пытаюсь перенести проект с 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
.Но размер 4 для str
и 256 для short
.Есть ли другой способ заставить компилятор трактовать string
как shortstring
или это единственное решение, которое заменяет все вхождения string
на shortstring
в исходном коде?