TStringListにファイルを読み込みたい
-
22-07-2019 - |
質問
はい、単純なログファイルをTStringListに読み込みたいのですが、LoadFromFileを使用すると簡単です。しかし、問題は、ファイルがすでに別のプログラムによって同時に開かれている可能性があるため、例外が表示される可能性があることです。私は使用しようとしました:
FileMode := fmShareCompat;
ただし、動作しません。
私も使用しようとしました:
fFilePath := fPathList[PathIndex] + '\' + FileData.Name;
AssignFile(vFile, fFilePath);
Reset(vFile, 1); // Recordsize = 1
SetLength(vFileString, FileData.Size);
BlockRead(vFile, vFileString, FileData.Size);
vCurrentFile.Text := vFileString;
メッセージI / Oエラー998でEInOutErrorが発生します。
何か提案はありますか?
解決
LoadFromStream を試して、次のようにします:
fileStream := TFileStream.Create(aFileName, fmShareDenyNone);
myTStringList.LoadFromStream(fileStream);
fileStream.Free();
他のヒント
fmShareCompatは、おそらく非推奨としてマークする必要があります。あなたは fmShareDenyNone ( Dreejcが言ったように)
fmShareCompatは、私が信じている16 DOS日から来ています。 Windowsでは、fmShareExclusiveと同じように扱われます。 Linuxがサポートされたとき、fmShareDenyNoneと同じように扱われました。
また、try..exceptとtry..finallyは、この時点では良い友達です。ファイル読み取りコードをこれらのタイプのブロックにカプセル化し、発生した問題についてユーザーに伝えます。
所属していません StackOverflow