Эти строковые поля в Delphi 2009 такие же, как и во всех предыдущих версиях. ShortString
не является типом Unicode.
Таким образом, вы сможете продолжить использовать эту запись как есть.
Вы говорите, что он работал в Delphi 7. Разве он не работает в Delphi 2009? Опишите проблему, с которой вы столкнулись.
Вы хотите сказать, что хотите Unicode фиксированной длины, эквивалентный ShortString
? Такой записи нет, поэтому вы не можете иметь такую запись, хранить в ней строковые значения Юникода и сохранять ее непосредственно на диск.
Однако я не думаю, что это серьезная проблема, поскольку формат вашего диска в любом случае не будет совместим с вашим текущим форматом: ваши символы будут слишком большими.
Вы можете использовать массив символов:
type
TSecStructure = packed record
Name : array[0..255] of UnicodeChar;
ScreenName : array[0..255] of UnicodeChar;
OrigFileName : array[0..255] of UnicodeChar;
Prim : array[0..255] of UnicodeChar;
ParentVersion : integer;
sTag1 : array[0..255] of UnicodeChar;
sTag2 : array[0..255] of UnicodeChar;
sTag3 : array[0..255] of UnicodeChar;
sTag4 : array[0..255] of UnicodeChar;
DateAdd : TDateTime;
DateModify : TDateTime;
end;
Это будет не так удобно, как в случае с настоящими строковыми типами, но будет работать для большинства целей.
Вы также можете использовать обычный UnicodeString
тип:
type
TSecStructure = record
Name : UnicodeString;
ScreenName : UnicodeString;
OrigFileName : UnicodeString;
Prim : UnicodeString;
ParentVersion : integer;
sTag1 : UnicodeString;
sTag2 : UnicodeString;
sTag3 : UnicodeString;
sTag4 : UnicodeString;
DateAdd : TDateTime;
DateModify : TDateTime;
end;
Вы больше не можете сохранить это непосредственно на диск, но вы также больше не ограничены 255 символами. Вам придется хранить каждое строковое поле отдельно. Обязательно сохраните длину строки, иначе вы не будете знать, где заканчивается одна строка и начинается следующая, когда придет время загрузить файл позже.