我已经阅读了这里关于 Delphi 中无效指针操作的大部分帖子,它们似乎不适用于这种情况......反复试验使我遇到了问题,但这对我来说没有任何意义。在此示例中,动态记录数组在解析文本文件时填充了文本文件的内容。除非分配给动态数组的内存被释放,否则一切正常 - 在这种情况下,我会收到“无效指针操作”。当我将有问题的行从 ifthen 语句更改为经典的 if-then 时,它可以工作。
我的问题很简单:为什么第一个导致它无法释放内存,而第二个却成功了?
第一个例子:
TempFTDB[ci].FTText := ifthen(TempHolder = '', '', TempHolder + #13#10) + lr;
第二个例子:
if tempholder = '' then
TempFTDB[ci].FTText := lr
else
TempFTDB[ci].FTText := tempholder + #13#10 + lr;
释放内存的行是:
TempFTDB := nil;
进一步说明: TempFTDB 是一个局部变量,没有其他行可以释放它的内存。错误发生在“TempFTDB := nil”行。