Delphi程式設計:用流來讀取TXT檔案中的資料
TXT文字檔案是一種以ACSII嗎儲存資料的檔案。在TXT檔案中只能夠儲存一些字元資料,所以這種檔案的移植性和通用性很強,較高的易用性,並且被廣泛應用,所以Delphi對該型別檔案提供了較好的支援。在Internet上最為的XML檔案也是一種文字檔案。TXT文字檔案的操作非常,具體操作過程如下:
1.首先要宣告一個TextFile型別的的檔案指標。如:var MyFile:TEXTFile。
2.然後使用AssignFile方法將宣告的檔案指標與外部TXT檔案相關聯。AssignFile (FileName ) ;FileName 既可以是全路徑名,也可以僅是檔名。對於後者系統將在當前目錄下查詢。
3.初始化讀寫有三種方式: Reset為讀開啟檔案並把檔案指標移動到檔案首;Rewrite為寫建立一個新檔案;Append為寫開啟存在的檔案並把檔案指標定位在檔案尾。
4.讀取或寫入文字。Readln方法能夠讀取一行文字,writeln方法能向檔案寫入一行文字。
5.最後用Closefile方法關閉已開啟的檔案。
在這裡我們要介紹的就是如何用流來讀取TXT檔案中的資料,並且在指定顯示區域顯示出來。首先讓我們透過一個簡單範例來了解ReadBuffer方法,讓我們來讀取指定TXT檔案的前10個字元。
procedure TForm1.Button1Click(Sender: TObject);
var
MyFile:TMemoryStream;
Filebuf: array[1..10] of char; //這裡宣告的是靜態陣列
a:string;
Begin
If opendialog1.Execute then
begin
MyFile:=TMemoryStream.Create;//建立流
MyFile.LoadFromFile(opendialog1.FileName);
MyFile.ReadBuffer(Filebuf,10);//讀取TXT檔案前10個字元
a:= strpas(Filebuf) //將陣列轉化字串
Form1.canvas.Textout(0,0,a); //在顯示區域上顯示字串
FreeAndNil(MyFile);//釋放流
end;
end;
以上範例在窗體Form1上顯示的字串就是開啟TXT文字的前10個字元,但是如何得到文字的所有資料呢?這裡就需要用到動態陣列。動態陣列在流中的 應用是個難點,因為Delphi中的靜態陣列是在執行前就已經將記憶體空間分配好,所以它的變數地址就是陣列的第一維地址,即沒有描述部份,故它的 sizeof為1個位元組,而動態陣列是在執行期間動態分配一個記憶體塊,所以它的變數地址部分需要一個描述部分,故它的sizeof為四個位元組,用於存放描 述表,所以在用 Readbuffer方法時,需要採用陣列的第一維地址為起始地址,才不會導致記憶體溢位。下面這個範例就是用流來讀取TXT檔案中的全部 資料。
procedure TForm1.Button1Click(Sender: TObject);
var
MyFile:TMemoryStream;
Filebuf: array of pchar; //這裡宣告的是動態陣列
iLen:Int64;
Begin
If opendialog1.Execute then
begin
iLen:=0;
MyFile:=TMemoryStream.Create;
MyFile.LoadFromFile(opendialog1.FileName);
iLen:=MyFile.Size;//獲得指定TXT檔案的大小
SetLength(FileBuf,iLen);//設定動態陣列的長度為TXT檔案的大小
MyFile.ReadBuffer(FileBuf[0],iLen);//讀取TXT檔案全部資料
Form1.canvas.Textout(0,0,string(FileBuf)); //在顯示區域上顯示字串;
FreeAndNil(MyFile);
end;
end;
以上的範例可在窗體Form1上顯示指定TXT檔案的全部資料。
現在讓我們來研究一下如何從TXT文字中的指定位置讀取一定量的資料,這裡用到的函式就是seek(offset:integer,origin:word)integer; 它的引數所代表的意義: offset是偏移量;
而origin是計算方式 ,下面三個就是origin的值,soFromBeginning是從檔案頭開始計算,soFromCurrent是從當前位置開始計算,而soFromEnd Offset是從最後位置開始計算。
下面這個範例就是從TXT文字中的指定位置取一定量的資料
procedure TForm1.Button1Click(Sender: TObject);
var
MyFile:TMemoryStream;
Filebuf: array of pchar; //這裡宣告的是動態陣列
iLen:Int64;
Begin
If opendialog1.Execute then
begin
iLen:=0;
MyFile:=TMemoryStream.Create;
MyFile.LoadFromFile(opendialog1.FileName);
iLen:=MyFile.Size;
SetLength(FileBuf,1024);//設定動態陣列的長度;
Myfile.Seek(1024, soFromBeginning);//從檔案頭開始計算到1024個位元組處
MyFile.ReadBuffer(FileBuf[0],1024);//從seek設定的當前位置往後讀取1024位元組
Form1.canvas.Textout(0,0,string(FileBuf)); //在窗體上顯示;
FreeAndNil(MyFile);
end;
end;[@more@]
1.首先要宣告一個TextFile型別的的檔案指標。如:var MyFile:TEXTFile。
2.然後使用AssignFile方法將宣告的檔案指標與外部TXT檔案相關聯。AssignFile (FileName ) ;FileName 既可以是全路徑名,也可以僅是檔名。對於後者系統將在當前目錄下查詢。
3.初始化讀寫有三種方式: Reset為讀開啟檔案並把檔案指標移動到檔案首;Rewrite為寫建立一個新檔案;Append為寫開啟存在的檔案並把檔案指標定位在檔案尾。
4.讀取或寫入文字。Readln方法能夠讀取一行文字,writeln方法能向檔案寫入一行文字。
5.最後用Closefile方法關閉已開啟的檔案。
在這裡我們要介紹的就是如何用流來讀取TXT檔案中的資料,並且在指定顯示區域顯示出來。首先讓我們透過一個簡單範例來了解ReadBuffer方法,讓我們來讀取指定TXT檔案的前10個字元。
procedure TForm1.Button1Click(Sender: TObject);
var
MyFile:TMemoryStream;
Filebuf: array[1..10] of char; //這裡宣告的是靜態陣列
a:string;
Begin
If opendialog1.Execute then
begin
MyFile:=TMemoryStream.Create;//建立流
MyFile.LoadFromFile(opendialog1.FileName);
MyFile.ReadBuffer(Filebuf,10);//讀取TXT檔案前10個字元
a:= strpas(Filebuf) //將陣列轉化字串
Form1.canvas.Textout(0,0,a); //在顯示區域上顯示字串
FreeAndNil(MyFile);//釋放流
end;
end;
以上範例在窗體Form1上顯示的字串就是開啟TXT文字的前10個字元,但是如何得到文字的所有資料呢?這裡就需要用到動態陣列。動態陣列在流中的 應用是個難點,因為Delphi中的靜態陣列是在執行前就已經將記憶體空間分配好,所以它的變數地址就是陣列的第一維地址,即沒有描述部份,故它的 sizeof為1個位元組,而動態陣列是在執行期間動態分配一個記憶體塊,所以它的變數地址部分需要一個描述部分,故它的sizeof為四個位元組,用於存放描 述表,所以在用 Readbuffer方法時,需要採用陣列的第一維地址為起始地址,才不會導致記憶體溢位。下面這個範例就是用流來讀取TXT檔案中的全部 資料。
procedure TForm1.Button1Click(Sender: TObject);
var
MyFile:TMemoryStream;
Filebuf: array of pchar; //這裡宣告的是動態陣列
iLen:Int64;
Begin
If opendialog1.Execute then
begin
iLen:=0;
MyFile:=TMemoryStream.Create;
MyFile.LoadFromFile(opendialog1.FileName);
iLen:=MyFile.Size;//獲得指定TXT檔案的大小
SetLength(FileBuf,iLen);//設定動態陣列的長度為TXT檔案的大小
MyFile.ReadBuffer(FileBuf[0],iLen);//讀取TXT檔案全部資料
Form1.canvas.Textout(0,0,string(FileBuf)); //在顯示區域上顯示字串;
FreeAndNil(MyFile);
end;
end;
以上的範例可在窗體Form1上顯示指定TXT檔案的全部資料。
現在讓我們來研究一下如何從TXT文字中的指定位置讀取一定量的資料,這裡用到的函式就是seek(offset:integer,origin:word)integer; 它的引數所代表的意義: offset是偏移量;
而origin是計算方式 ,下面三個就是origin的值,soFromBeginning是從檔案頭開始計算,soFromCurrent是從當前位置開始計算,而soFromEnd Offset是從最後位置開始計算。
下面這個範例就是從TXT文字中的指定位置取一定量的資料
procedure TForm1.Button1Click(Sender: TObject);
var
MyFile:TMemoryStream;
Filebuf: array of pchar; //這裡宣告的是動態陣列
iLen:Int64;
Begin
If opendialog1.Execute then
begin
iLen:=0;
MyFile:=TMemoryStream.Create;
MyFile.LoadFromFile(opendialog1.FileName);
iLen:=MyFile.Size;
SetLength(FileBuf,1024);//設定動態陣列的長度;
Myfile.Seek(1024, soFromBeginning);//從檔案頭開始計算到1024個位元組處
MyFile.ReadBuffer(FileBuf[0],1024);//從seek設定的當前位置往後讀取1024位元組
Form1.canvas.Textout(0,0,string(FileBuf)); //在窗體上顯示;
FreeAndNil(MyFile);
end;
end;[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/93029/viewspace-1021922/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- EasyExcel庫來讀取指定Excel檔案中的資料Excel
- Rust 程式設計,讀取檔案Rust程式設計
- delphi讀取ini檔案 (轉)
- 用C#讀取txt檔案的方法C#
- Spring用程式碼來讀取properties檔案Spring
- 讀取檔案流並寫入檔案流
- java呼叫window本地應用程式;讀取TXT型別檔案Java型別
- openfiledialog 使用 讀取txt檔案 StreamReader 檢驗資料
- Shell程式設計-檔案讀取方法集錦程式設計
- php如何上傳txt檔案,並且讀取txt檔案PHP
- SHELL程式設計—每次讀取檔案的一行程式設計
- ASP.NET Core 中的檔案提供程式 遍歷資料夾讀取檔案資訊ASP.NET
- 程式設計競賽中讀檔案技能程式設計
- Javascript寫入txt和讀取txt檔案示例JavaScript
- 用Groovy讀取本地檔案的程式碼
- 談Delphi程式設計中資原始檔的應用 (轉)程式設計
- HDFS讀檔案過程分析:讀取檔案的Block資料BloC
- delphi清理txt檔案多餘的空格
- IO流-檔案的寫入和讀取
- 說說在 Python 中,如何讀取檔案中的資料Python
- Java 讀取txt檔案生成Word文件Java
- 怎麼利用js讀取txt檔案JS
- Android儲存讀取txt檔案Android
- 使用yaml檔案讀取資料YAML
- golang讀取檔案的json資料流,並解析到struct,儲存到資料庫GolangJSONStruct資料庫
- 讀取txt檔案的簡易演算法演算法
- java 讀取.txt檔案時,注意的問題Java
- C#讀取被程式佔用的檔案C#
- python中按照資料夾中檔案的排列順序讀取檔案內容Python
- VB程式設計獲取檔案中整合的圖示程式設計
- 一鍵清除Delphi中無用的檔案
- gin框架,讀取檔案的json資料流,並解析到struct,儲存到資料庫框架JSONStruct資料庫
- C# 讀取txt檔案生成Word文件C#
- 程式設計遠端讀取AB PLC的資料 (轉)程式設計
- Delphi資料庫程式設計教程(九) (轉)資料庫程式設計
- 用Python讀取excel中的資料PythonExcel
- vb向資料庫中讀取單個圖片檔案資料庫
- 用JDOM讀取XML檔案XML