Delphi txt文件的操作[2]用流Stream來讀取文件


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  更新時間:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM