我拿到了一个老项目的源代码,需要做一些小修改,但因为只有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”类型,因为他想要一个“finalization”。 所以我尝试将“string”更改为“string[255]”或“shortstring”。这样做,应用程序读取文件但内容错误。 我的问题是如何将旧的“string”类型转换为Delphi 2010中的“新”类型。我已经尝试了很多方法,例如“{$H-}”。仅在记录中添加一个字符显示文件是正确的,因为读取的文件几乎是正确的,但每个数据集都被截断了一个字符 - 长度字节+255个字符的长度似乎对于定义是正确的,但shortstring不匹配。
path : array[0..N] of AnsiChar;
,其中N是一些常数,可能是255。 - kludgAnsiString
,那么read
如何工作呢?另一方面,唯一真正有意义的解释是,ShortString
显然也失败了。 - David Heffernan