日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁編程開發(fā)Delphi → Delphi文件讀寫操作常用的方法

      Delphi文件讀寫操作常用的方法

      前往專題相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:百度搜索時(shí)間:2012/8/22 11:11:25字體大。A-A+

      作者:西西點(diǎn)擊:759次評(píng)論:0次標(biāo)簽: Delphi7

      Delphi77.0 Build 8.1企業(yè)版龍卷風(fēng)集成Update1
      • 類型:編程工具大。150.0M語言:英文 評(píng)分:4.0
      • 標(biāo)簽:
      立即下載

      在進(jìn)行win32開發(fā)中對(duì)文件的讀寫是最常用的操作之一,這編文章西西小編和大家一起來學(xué)習(xí)一下在Delphi中如何讀寫文件的方法。

      Delphi 支持三種文件類型:  文本文件、記錄文件、無類型文件。

      文本文件的讀寫:

      文本文件 是以行為單位進(jìn)行讀、寫的。由于每一行的長度不一定相同,不能計(jì)算出給定行在文件中的確切位置,因而只能順序地讀寫。

      文本文件只能單獨(dú)為讀或?qū)懚蜷_,在一個(gè)打開的文本文件上同時(shí)進(jìn)行讀、寫操作是不允許的。

      文本文件 的打開需要兩個(gè)步驟:1.文件變量與文件名關(guān)聯(lián);2.初始化讀寫。

      1.文件變量與文件名關(guān)聯(lián):
      AssignFile(VarTxt, FileName);
      FileName 如果省略路徑將默認(rèn)當(dāng)前目錄。

      2.初始化讀寫有三種方式:
      (1) Reset: 只讀打開, 指針移到文件頭;
      (2) Rewrite: 創(chuàng)建新文件并打開, 只寫;
      (3) Append: 從尾部追加, 指針當(dāng)然在文件尾。

      文件不存在時(shí)使用 Reset 或 Append 會(huì)引發(fā)一個(gè)I/O異常。

      最后用 CloseFile 關(guān)閉文件。

      為保持兼容,Delphi 也允許用戶用 Assign 建立關(guān)聯(lián), 用 Close 關(guān)閉文件。

      第一種、直接用 memo 加載 txt文件

      1. memo控件讀取txt
      memo1.Lines.LoadFromFile('E:\*\*.txt');

      要讀取一個(gè)txt文件的全部內(nèi)容可以借用到 stringlist 來中轉(zhuǎn)。

      建立一個(gè)stringlist,如:
      var
      sList: TStringlist;
      begin
         sList := TStringList.Create;
      try
         sList.LoadFromFile('C:\a.txt');
      finally
      sList.Free;
      end;
      end;

      然后可以將TStringList 轉(zhuǎn)換為 string類型  str=ts.GetText ; 來轉(zhuǎn)換



      第二種、Delph內(nèi)建的函數(shù)讀寫

      示例代碼:

      var
        F: Text;  //TextFile 和 Text 是一樣的
        FileName: string = 'c:\temp\test.txt';
      //寫文件
      procedure TForm1.Button1Click(Sender: TObject);
      begin
        AssignFile(F,FileName);
        Rewrite(F);  //會(huì)覆蓋已存在的文件
        Writeln(F, '第一行');
        Writeln(F, '第二行');
        CloseFile(F);
      end;
      //讀文件(先執(zhí)行寫文件)
      procedure TForm1.Button2Click(Sender: TObject);
      var
        s: string;
      begin
        AssignFile(F,FileName);
        Reset(F);  //只讀打開
        Readln(F, s);   //讀取
        ShowMessage(s); //顯示: 第一行
        Readln(F, s);   //繼續(xù)讀取
        ShowMessage(s); //顯示: 第二行
        CloseFile(F);
      end;
      //追加
      procedure TForm1.Button3Click(Sender: TObject);
      begin
        AssignFile(F,FileName);
        Append(F);  //打開準(zhǔn)備追加
        Writeln(F, '第三行');
        Writeln(F, '第四行');
        CloseFile(F);
      end;
      //讀取全部(需要Memo幫忙顯示)
      procedure TForm1.Button4Click(Sender: TObject);
      var
        s: string;
      begin
        AssignFile(F,FileName);
        Reset(F);  //只讀打開
        Memo1.Clear;
        while not Eof(F) do
        begin
          Readln(F, s);
          Memo1.Lines.Add(s);
        end;
        CloseFile(F);
      end;
       
      第三種、Delphi 用流來讀取TXT文件
      TXT文本文件是一種以ACSII嗎存儲(chǔ)數(shù)據(jù)的文件。在TXT文件中只能夠存儲(chǔ)一些字符數(shù)據(jù),所以這種文件的移植性和通用性很強(qiáng),具有較高的易用性,并且 被廣泛應(yīng)用,所以Delphi對(duì)該類型文件提供了較好的支持。目前在Internet上最為流行的XML文件也是一種文本文件。TXT文本文件的操作非常 簡單,具體操作過程如下: 
      
      1.首先要聲明一個(gè)TextFile類型的的文件指針。如:var MyFile:TEXTFile。 
      
      2.然后使用AssignFile方法將聲明的文件指針與外部TXT文件相關(guān)聯(lián)。AssignFile (FileName ) ;FileName 既可以是全路徑名,也可以僅是文件名。對(duì)于后者系統(tǒng)將在當(dāng)前目錄下查找。 
      
      3.初始化讀寫有三種方式: Reset為讀打開文件并把文件指針移動(dòng)到文件首;Rewrite為寫創(chuàng)建一個(gè)新文件;Append為寫打開存在的文件并把文件指針定位在文件尾。 
      
      4.讀取或?qū)懭胛谋尽eadln方法能夠讀取一行文本,writeln方法能向文件寫入一行文本。 
      
      5.最后用Closefile方法關(guān)閉已打開的文件。 
      
      在這里我們要介紹的就是如何用流來讀取TXT文件中的數(shù)據(jù),并且在指定顯示區(qū)域顯示出來。首先讓我們通過一個(gè)簡單范例來了解ReadBuffer方法,讓我們來讀取指定TXT文件的前10個(gè)字符。 
      
      
      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個(gè)字符 
      
      a:= strpas(Filebuf) //將數(shù)組轉(zhuǎn)化成為字符串 
      
      Form1.canvas.Textout(0,0,a); //在顯示區(qū)域上顯示字符串 
      
      FreeAndNil(MyFile);//釋放流 
      
      end; 
      
      end; 
      
      
      以上范例在窗體Form1上顯示的字符串就是打開TXT文本的前10個(gè)字符,但是如何得到文本的所有數(shù)據(jù)呢?這里就需要用到動(dòng)態(tài)數(shù)組。動(dòng)態(tài)數(shù)組在流中 的應(yīng)用是個(gè)難點(diǎn),因?yàn)镈elphi中的靜態(tài)數(shù)組是在運(yùn)行前就已經(jīng)將內(nèi)存空間分配好,所以它的變量地址就是數(shù)組的第一維地址,即沒有描述部份,故它的 sizeof為1個(gè)字節(jié),而動(dòng)態(tài)數(shù)組是在運(yùn)行期間動(dòng)態(tài)分配一個(gè)內(nèi)存塊,所以它的變量地址部分需要一個(gè)描述部分,故它的sizeof為四個(gè)字節(jié),用于存放描 述表,所以在用 Readbuffer方法時(shí),需要采用數(shù)組的第一維地址為起始地址,才不會(huì)導(dǎo)致內(nèi)存溢出。下面這個(gè)范例就是用流來讀取TXT文件中的全部數(shù)據(jù)。 
      
      
      procedure TForm1.Button1Click(Sender: TObject); 
      
      var 
      
      MyFile:TMemoryStream; 
      
      Filebuf: array of pchar; //這里聲明的是動(dòng)態(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è)置動(dòng)態(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是計(jì)算方式 ,下面三個(gè)就是origin的值,soFromBeginning是從文件頭開始計(jì)算,soFromCurrent是從當(dāng)前位置開始計(jì)算,而soFromEnd Offset是從最后位置開始計(jì)算。 
      
      下面這個(gè)范例就是從TXT文本中的指定位置取一定量的數(shù)據(jù) 
      
      procedure TForm1.Button1Click(Sender: TObject); 
      
      var 
      
      MyFile:TMemoryStream; 
      
      Filebuf: array of pchar; //這里聲明的是動(dòng)態(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è)置動(dòng)態(tài)數(shù)組的長度; 
      
      Myfile.Seek(1024, soFromBeginning);//從文件頭開始計(jì)算到1024個(gè)字節(jié)處 
      
      MyFile.ReadBuffer(FileBuf[0],1024);//從seek設(shè)置的當(dāng)前位置往后讀取1024字節(jié) 
      
      Form1.canvas.Textout(0,0,string(FileBuf)); //在窗體上顯示; 
      
      FreeAndNil(MyFile); 
      
      end; 
      
      end
      
        Delphi
        (9)Delphi
        比以往的版本都要快,而且它保留了一些的特性,最大的特點(diǎn)就是向下兼容的能力,與相比,簡直是一個(gè)巨大的飛越,編碼的問題大多被自行消化掉了。的新功能其實(shí)并不是很多,并沒有那么驚艷,主要都集中在細(xì)節(jié)改進(jìn)。...更多>>
        • Embarcadero RAD Studio 2010v2010

          05-15 / 1.66G

          推薦理由:本軟件系 Embarcadero公司(CodeGear的)RAD Studio 正版軟件。也是正式版軟件。 不需要任何序列號(hào)和破解文
        • delphi 2010

          03-26 / 604KB

          推薦理由:請(qǐng)仔細(xì)看使用說明覺對(duì)真的 本人親自測試Delphi新版本(D2010)簡介:1. 多核的支持 / 異步方法 (VC中早就擁有
        • Delphi 5安裝版

          01-10 / 224.2M

          推薦理由:delphi 5 Delphi是著名的Borland(現(xiàn)在已和Inprise合并)公司開發(fā)的可視化軟件開發(fā)工具!罢嬲某绦騿T用c
        • Delphi 7(集成控件)v7.0Build8.1企

          03-25 / 211.9M

          推薦理由:Borland Delphi V7.0 Build 8.1企業(yè)版 龍卷風(fēng)集成U pdate1 已集成官方的Update1完整升級(jí)包,版本號(hào)為,安裝
        • Delphi7_Lite_Mini_Edition_v7.3.1

          08-30 / 22.6M

          推薦理由:elphi7精簡優(yōu)化迷你版,包含幫助.只支持Standard,DB,ADO,BDE,DBX,Midas,ShellCtrls,internet,Delphi 1.0 Com
        • Delphi77.0 Build 8.1企業(yè)版龍卷風(fēng)

          05-15 / 150.0M

          推薦理由:Borland Delphi V7.0 Build 8.1企業(yè)版 龍卷風(fēng)集成U pdate1 已集成官方的Update1完整升級(jí)包,版本號(hào)為,安裝

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評(píng)論

        最新評(píng)論

        第 2 樓 江蘇鎮(zhèn)江電信 網(wǎng)友 客人 發(fā)表于: 2015/6/17 12:51:23
        好!很具體,很清楚,對(duì)需要文件處理的人 非常有用

        支持( 0 ) 蓋樓(回復(fù))

        第 1 樓 中國CZ88.NET 網(wǎng)友 客人 發(fā)表于: 2013/3/15 15:46:03
        我就是想要這方面的,非常好。。。

        支持( 0 ) 蓋樓(回復(fù))

        發(fā)表評(píng)論 查看所有評(píng)論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)