次のように、TFileStream クラスを使用して読み取り用にファイルを開くことができます ...
FileStream := TFileStream.Create( 'MyBigTextFile.txt', fmOpenRead)
TFileStream は参照カウント オブジェクトではないため、完了したら解放してください。
FileStream.Free
これ以降、ファイルの文字エンコーディングは UTF-8 であり、行末は MS スタイルであると仮定します。そうでない場合は、それに応じて調整するか、質問を更新してください。
次のように、UTF-8 文字の単一のコード単位を読み取ることができます (単一の文字を読み取ることとは異なります)。
var ch: ansichar;
FileStream.ReadBuffer( ch, 1);
あなたはそのようにテキストの行を読むことができます...
function ReadLine( var Stream: TStream; var Line: string): boolean;
var
RawLine: UTF8String;
ch: AnsiChar;
begin
result := False;
ch := #0;
while (Stream.Read( ch, 1) = 1) and (ch <> #13) do
begin
result := True;
RawLine := RawLine + ch
end;
Line := RawLine;
if ch = #13 then
begin
result := True;
if (Stream.Read( ch, 1) = 1) and (ch <> #10) then
Stream.Seek(-1, soCurrent) // unread it if not LF character.
end
end;
位置が 0 であると仮定して、2 行目、3 行目、4 行目を読み取るには ...
ReadLine( Stream, Line1);
ReadLine( Stream, Line2);
ReadLine( Stream, Line3);
ReadLine( Stream, Line4);