国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Delphi編程:用流來讀取TXT文件中的數(shù)據(jù)
TXT文本文件是一種以ACSII嗎存儲數(shù)據(jù)的文件。在TXT文件中只能夠存儲一些字符數(shù)據(jù),所以這種文件的移植性和通用性很強,具有較高的易用性,并且被廣泛應(yīng)用,所以Delphi對該類型文件提供了較好的支持。目前在Internet上最為流行的XML文件也是一種文本文件。TXT文本文件的操作非常簡單,具體操作過程如下:

  1.首先要聲明一個TextFile類型的的文件指針。如:var MyFile:TEXTFile。

  2.然后使用AssignFile方法將聲明的文件指針與外部TXT文件相關(guān)聯(lián)。AssignFile (FileName ) ;FileName 既可以是全路徑名,也可以僅是文件名。對于后者系統(tǒng)將在當(dāng)前目錄下查找。

  3.初始化讀寫有三種方式: Reset為讀打開文件并把文件指針移動到文件首;Rewrite為寫創(chuàng)建一個新文件;Append為寫打開存在的文件并把文件指針定位在文件尾。

  4.讀取或?qū)懭胛谋?。Readln方法能夠讀取一行文本,writeln方法能向文件寫入一行文本。

  5.最后用Closefile方法關(guān)閉已打開的文件。

  在這里我們要介紹的就是如何用流來讀取TXT文件中的數(shù)據(jù),并且在指定顯示區(qū)域顯示出來。首先讓我們通過一個簡單范例來了解ReadBuffer方法,讓我們來讀取指定TXT文件的前10個字符。

   procedure TForm1.Button1Click(Sender: TObject);

   var

   MyFile:TMemoryStream;

   Filebuf: array[1..10] of char; //這里聲明的是靜態(tài)數(shù)組

   a:string;

  Begin

   If opendialog1.Execute then

   begin

   MyFile:=TMemoryStream.Create;//創(chuàng)建流

   MyFile.LoadFromFile(opendialog1.FileName);

   MyFile.ReadBuffer(Filebuf,10);//讀取TXT文件前10個字符

   a:= strpas(Filebuf) //將數(shù)組轉(zhuǎn)化成為字符串

   Form1.canvas.Textout(0,0,a); //在顯示區(qū)域上顯示字符串

   FreeAndNil(MyFile);//釋放流

   end;

  end;

  以上范例在窗體Form1上顯示的字符串就是打開TXT文本的前10個字符,但是如何得到文本的所有數(shù)據(jù)呢?這里就需要用到動態(tài)數(shù)組。動態(tài)數(shù)組在流中的應(yīng)用是個難點,因為Delphi中的靜態(tài)數(shù)組是在運行前就已經(jīng)將內(nèi)存空間分配好,所以它的變量地址就是數(shù)組的第一維地址,即沒有描述部份,故它的 sizeof為1個字節(jié),而動態(tài)數(shù)組是在運行期間動態(tài)分配一個內(nèi)存塊,所以它的變量地址部分需要一個描述部分,故它的sizeof為四個字節(jié),用于存放描述表,所以在用 Readbuffer方法時,需要采用數(shù)組的第一維地址為起始地址,才不會導(dǎo)致內(nèi)存溢出。下面這個范例就是用流來讀取TXT文件中的全部數(shù)據(jù)。

  procedure TForm1.Button1Click(Sender: TObject);

   var

   MyFile:TMemoryStream;

   Filebuf: array of pchar; //這里聲明的是動態(tài)數(shù)組

   iLen:Int64;

  Begin

   If opendialog1.Execute then

   begin

   iLen:=0;

   MyFile:=TMemoryStream.Create;

   MyFile.LoadFromFile(opendialog1.FileName);

   iLen:=MyFile.Size;//獲得指定TXT文件的大小

   SetLength(FileBuf,iLen);//設(shè)置動態(tài)數(shù)組的長度為TXT文件的大小

   MyFile.ReadBuffer(FileBuf[0],iLen);//讀取TXT文件全部數(shù)據(jù)

   Form1.canvas.Textout(0,0,string(FileBuf)); //在顯示區(qū)域上顯示字符串;

   FreeAndNil(MyFile);

   end;

  end;

  以上的范例可在窗體Form1上顯示指定TXT文件的全部數(shù)據(jù)。

  現(xiàn)在讓我們來研究一下如何從TXT文本中的指定位置讀取一定量的數(shù)據(jù),這里用到的函數(shù)就是seek(offset:integer,origin:word)integer; 它的參數(shù)所代表的意義: offset是偏移量;

  而origin是計算方式 ,下面三個就是origin的值,soFromBeginning是從文件頭開始計算,soFromCurrent是從當(dāng)前位置開始計算,而soFromEnd Offset是從最后位置開始計算。

  下面這個范例就是從TXT文本中的指定位置取一定量的數(shù)據(jù)

   procedure TForm1.Button1Click(Sender: TObject);

   var

   MyFile:TMemoryStream;

   Filebuf: array of pchar; //這里聲明的是動態(tài)數(shù)組

   iLen:Int64;

  Begin

   If opendialog1.Execute then

   begin

   iLen:=0;

   MyFile:=TMemoryStream.Create;

   MyFile.LoadFromFile(opendialog1.FileName);

   iLen:=MyFile.Size;

  SetLength(FileBuf,1024);//設(shè)置動態(tài)數(shù)組的長度;

  Myfile.Seek(1024, soFromBeginning);//從文件頭開始計算到1024個字節(jié)處

   MyFile.ReadBuffer(FileBuf[0],1024);//從seek設(shè)置的當(dāng)前位置往后讀取1024字節(jié)

   Form1.canvas.Textout(0,0,string(FileBuf)); //在窗體上顯示;

   FreeAndNil(MyFile);

   end;

  end;

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
文件打開的幾種方式(c/c++/Windows)
Delphi 7.0常用函數(shù)速查手冊
C# 對文本文件的讀寫
怎么用delphi向sql2000數(shù)據(jù)庫image字段寫word文件
R語言導(dǎo)入txt文件
delphi Opendialog文件過濾類型
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服