Delphi txt文件的操作[2]用流Stream來讀取文件
1、讀取全部內容
var
mFileStream: TMemoryStream;
Filebuf: array of PChar; //聲明動態數組
iLen: Int64;
begin
iLen := 0;
mFileStream := TMemoryStream.Create;
try
mFileStream.LoadFromFile('TaoRoy.txt');
iLen := mFileStream.Size; //獲得指定TXT文件的大小
SetLength(FileBuf, iLen); //設置動態數組的長度為TXT文件的大小
mFileStream.ReadBuffer(FileBuf[0], iLen); //讀取TXT文件全部數據
Memo1.Text:=string(FileBuf); // Form1.canvas.Textout(0, 0, string(FileBuf)); //在顯示區域上顯示字符串;
finally
FreeAndNil(mFileStream);
end;
end;
2、讀取指定內容

var
mFileStream: TMemoryStream;
Filebuf: array of PChar; //這里聲明的是動態數組
begin
mFileStream := TMemoryStream.Create;
try
mFileStream.LoadFromFile('TaoRoy.txt');
SetLength(FileBuf, 5); //設置動態數組的長度;
mFileStream.Seek(5, soFromBeginning); //從文件頭開始計算到5個字節處
mFileStream.ReadBuffer(FileBuf[0], 5); //從seek設置的當前位置往后讀取5字節
Memo1.Text:=string(FileBuf); //Form1.canvas.Textout(0, 0, string(FileBuf)); //在窗體上顯示;
finally
FreeAndNil(mFileStream);
end;
end;

如果超出會顯示錯誤

關於Seek函數的說明:
function Seek(Offset: Longint; Origin: Word): Longint; override;
//offset 是偏移量;
//origin的值:
// soFromBeginning 偏移量是從內存開始的。搜索移動到偏移位置。偏移量必須大於等於0。
// soFromCurrent 偏移是從當前位置開始的。搜索移動到位置+偏移。
// soFromEndOffset 偏移量是從內存的末尾開始的。偏移量必須小於等於0,以指示內存緩沖區結束前的字節數。
//注意:Seek在檢查為偏移量提供的值時不會出錯。如果偏移量會將當前位置移動到小於0(內存開始之前)或大於大小(內存緩沖區結束之后),則不要調用seek。
創建時間:2022.03.23 更新時間:
