【发布时间】:2012-05-06 17:45:54
【问题描述】:
我已经阅读了大多数关于 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”行。
【问题讨论】:
-
你能用新项目复制这个吗?
-
TempFTDB是什么类型的?如果错误发生在TempFTDB := nil行,那么设置FTText与它有什么关系? -
@NGLN - TempFTDB 是一个记录数组。 FTText 是记录的短字符串字段
标签: delphi pointers delphi-xe dynamic-arrays if-statement