ここでは、Delphiの無効なポインタ操作についての記事のほとんどを読みましたが、このケースには当てはまらないようです...試行錯誤は問題のある行に私を導きましたが、意味をなさない私。この例では、レコードの動的配列に解析されるテキストファイルの内容が格納されます。動的配列に割り当てられたメモリが解放された場合を除いて、すべてが完全に機能します。その場合、「無効なポインタ操作」を受け取ります。問題の行をifthen文から古典的なif-thenに変更すると、動作します。Delphi XEでのポインタ操作が無効です - IFTHENのため?
私の質問は簡単です:なぜ最初のものがメモリを解放するのに失敗しますが、もう1つは成功しますか?
第1の例:
TempFTDB[ci].FTText := ifthen(TempHolder = '', '', TempHolder + #13#10) + lr;
実施例2:
if tempholder = '' then
TempFTDB[ci].FTText := lr
else
TempFTDB[ci].FTText := tempholder + #13#10 + lr;
メモリを解放ラインである:
TempFTDB := nil;
さらに解明:TempFTDBローカル変数であり、ありますそれを解放する他の行はありません。エラーが発生するのは、 "TempFTDB:= nil"行にあります。あなたがメソッドのシグネチャで見ることができるようIfThen方法は、2つの文字列を期待しているため
これを新しいプロジェクトに複製できますか? –
どのようなタイプの 'TempFTDB'ですか? 'TempFTDB:= nil'行にエラーが発生した場合は、それに関連する' FTText'を何に設定していますか? – NGLN
@NGLN - TempFTDBはレコードの配列です。 FTTextはレコードの短文フィールドです –