Я получил источник старого проекта и должен изменить мелочи, но у меня возникли большие проблемы из-за того, что для этого было только delphi 2010.проблемы с строкой, переносящие Delphi 3 в Delphi 2010
Существует-запись определяется:
bbil = record
path : string;
pos: byte;
nr: Word;
end;
позже это определение используется для чтения из файла:
b_bil: file of bbil;
pbbil: ^bbil;
l_bil : tlist;
while not(eof(b_bil)) do
begin
new(pbbil);
read(b_bil, pbbil^);
l_bil.add(pbbil);
end
Основная проблема в том, что компилятор не принимает тип «строка» в запись, потому что он хочет «финализацию». Итак, я попытался изменить «string» на «string [255]» или «shortstring». Это приложение читает файл, но с неправильным контентом.
Мой вопрос заключается в том, чтобы преобразовать старый тип «строка», с которой файлы были записаны в «новых» типов в Delphi 2010.
я уже пробовал много, например, "{$ H-}". Добавление только одного символа больше в записи показывает, файл верен, потому что файл читается почти корректно, но усекается на один символ больше каждого набора данных - длина lengthbyte + 255chars кажется правильной fpr, но определение shortstring не соответствует.
Использование AnsiString в записывать результаты определения также в компиляторе: «финализация bbil нужна». Таким образом, замыкание этих AnsiString "pfad: AnsiString [255];" также не работает: ", ожидаемый, но [найденный". Что мне, вероятно, нужно isa ShortAnsiString? – rseffner
IMO ваш код не должен компилироваться в Delphi 3; try 'path: array [0..N] of AnsiChar;', где N - некоторая константа, может быть 255. – kludg
Сделайте, как говорит Дэвид, объявите строку как «ShortString». Для выравнивания записи попробуйте директиву упакованной записи, если это поможет. Для того, чтобы этот код работал в D3, должна была использоваться директива {$ H-}. –