質問

はい、単純なログファイルを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は、この時点では良い友達です。ファイル読み取りコードをこれらのタイプのブロックにカプセル化し、発生した問題についてユーザーに伝えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top