ファイルからテキストをロードする Visual Basic のコードがあります。それを Delphi に翻訳する必要がありますが、方法がわかりません。
Open txtFile.Text For Binary As #1
file = Space(LOF(1))
Get #1, , file
Close #1
このコードを Delphi で動作させるにはどうすればよいですか?
Delphi が古すぎない場合は、次のようにすることができます。
uses IOUtils;
...
S := TFile.ReadAllText('MyFileName.txt');
RTL がすでに十分に優れたものを提供している場合、独自のソリューションを発明しないでください。
TxtFile.text プロパティで指定された TFileStream を使用してファイルを開くことができます。「#1」はファイル ハンドルを意味しますが、OOP アプローチを使用しているため必要ありません。
Open txtFile.Text For Binary As #1 は、ファイルをテキスト モードではなく (メモ帳で開くなど) btu で開くことを意味するため、ASCII 文字に変換されるものは何もありません。すべてが文字としてではなく広告バイトとして読み取られます
LOF(1) はファイルの長さ (ハンドル 1) を返すようで、「スペース」はファイルの長さと同じ数のスペース文字 (#32) を含む文字列を生成し、それを変数「ファイル」に割り当てます。次に、ファイルハンドルを閉じます。
例として:
var
FileContents: AnsiString; // Or an 'array of Byte' instead
Stream: TFileStream;
begin
Stream := TFileStream.Create(txtFile.Text, fmOpenRead);
try
SetLength(FileContents, Stream.Size);
if Length(FileContents) > 0 then
Stream.ReadBuffer(Pointer(FileContents)^, Stream.Size);
finally
Stream.Free;
end;
// Use FileContents as needed...
end;
免責事項: