2

はい、単純なログファイルを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;

EInOutErrorが発生し、メッセージI/Oエラー998が発生します。

なにか提案を ?

4

3 に答える 3

13

LoadFromStreamを試して、次のようにします。

fileStream := TFileStream.Create(aFileName, fmShareDenyNone);
myTStringList.LoadFromStream(fileStream);
fileStream.Free();
于 2009-01-15T06:54:02.293 に答える
4

fmShareCompat は、おそらく非推奨としてマークする必要があります。fmShareDenyNoneが必要です( Drejc が言ったように)

fmShareCompat は、私が信じている 16 DOS 日から来ています。Windows では、fmShareExclusive と同じように扱われます。Linux がサポートされていたときは、fmShareDenyNone と同じように扱われました。

于 2009-01-15T09:50:40.453 に答える
1

また、try..except と try..finally は、このような場合の良い友達です。ファイル読み取りコードをこれらのタイプのブロックにカプセル化し、発生した問題についてユーザーに伝えます。

于 2009-01-15T07:05:25.233 に答える