乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      delphi文件操作(比較全)

       容心居 2019-12-12

      Delphi中默認(rèn)有input和output兩個(gè)文件變量,使用可以不用定義,直接使用.
        但: input:只讀、output:只寫。用時(shí)注意以免引起異常.

      文件是由文件名標(biāo)識(shí)的一組數(shù)據(jù)的集合,文件通常存放在磁盤上。源程序、學(xué)生檔案記錄、圖形、音樂等均可以作為文件存儲(chǔ)在磁盤上。操作系統(tǒng)是以文件為單位對(duì)數(shù)據(jù)進(jìn)行管理的,也就是說,如果想讀取外存介質(zhì)上的數(shù)據(jù),必須先按文件名找到所指定的文件,然后再從該文件中讀取數(shù)據(jù)。要向外存介質(zhì)上存儲(chǔ)數(shù)據(jù),也必須先建立一個(gè)文件(以文件名標(biāo)識(shí)),才能向它輸出數(shù)據(jù)。
      在程序運(yùn)行時(shí),常常需要將一些數(shù)據(jù)(運(yùn)行的最終結(jié)果或中間數(shù)據(jù))輸出到磁盤上,以后需要時(shí)再從磁盤中輸入到計(jì)算機(jī)內(nèi)存。這就要用到磁盤文件。
      1.文件類型 
      file是一個(gè)文件類型說明符,通過file可以定義文件變量,也可以定義一些新的類型。在Delphi中支持下面3種類型的文件:即文本文件、類型文件和無類型文件(也稱二進(jìn)制文件)。下面依次介紹3種文件類型變量的定義及使用方法。
      Delphi程序設(shè)計(jì)中,對(duì)任何一種文件的操作都可以歸納為:建立_打開_讀/寫_關(guān)閉。
      2. 文本文件
        (**** 轉(zhuǎn)載敬請(qǐng)注明-本文出處:南山古桃(nsgtao)的百度空間:http://hi.baidu.com/nsgtao/ ****)
      2.1 文本文件的概念

        在Delphi中定義了TextFile類型表示文本文件,由字符的ASCII碼組成,最小存取單位為字符。文本文件也稱為ASCII碼文件。利用常見的文字編輯器可以瀏覽支件內(nèi)容。
        文本文件是以行為單位進(jìn)行讀、寫操作的。由于每一行長(zhǎng)度不一定相同,不能計(jì)算出給定行在文件中的確切位置,因而只能順序地讀寫。在一個(gè)打開的文本文件上同時(shí)進(jìn)行讀、寫操作是不允許的。

      2.2 文本文件變量的定義
      定義文件變量的語法格式如下:
      var <文件變量名>:TextFile;
      例如,Var myTextFile : TextFile;就定義了一個(gè)文本文件變量myTextFile,下面就可以通過此變量引用一個(gè)文本文件。

      2.3 文本文件的使用

      (1)文件變量與文件關(guān)聯(lián)
      在使用文件變量進(jìn)行文件操作之前,需要將文件變量與要操作的文件關(guān)聯(lián),即給文件變量名賦值。文件變量賦值可以使用過程AssignFile,過程的說明語法格式如下:
      procedure AssignFile(Var F;FileName:string);
      其中,F(xiàn)為文件變量名,定義為無類型參數(shù)是為了和所有文件類型兼容;FileName是文件名字符串,是包括路徑的文件全稱名。例如,AssignFile (F,'e:\delphi\program\extl.txt’);就將文件變量F和指定的文件e:\delphi\program\extl.txt關(guān)聯(lián)起來。后面所有對(duì)變量f的操作都是對(duì)指定文件的操作。

      (2)使用文件變量打開文件
      使用不同的過程打開文件,有3種方式:
      procedure Rewrite(var F~File[;recsize:word]);
      這個(gè)過程創(chuàng)建并打開文件,可以對(duì)文件進(jìn)行寫。這里的F是一個(gè)已經(jīng)和指定文件名關(guān)聯(lián)的文件變量。對(duì)于一個(gè)已存在的文件,此操作將覆蓋原文件;如果文件不存在,將建立一個(gè)新的空文件。若是類型文件(下一小節(jié)介紹),可用recsize指定大小?!?br>procedure Reset(var F:File[;RecSize:Word]);
      使用Reset過程以讀的方式打開一個(gè)文件,此時(shí)只能從文件中讀取數(shù)據(jù)。f為文件變量,打開文件后,文件指針指向文件開頭。如果試圖用reset過程打開一個(gè)不存在的文件時(shí),將有I/O錯(cuò)誤產(chǎn)生。
      procedure.Append(var F:’Fext);
      使用Append過程向已存在的文件追加文本,這個(gè)過程僅用于文本文件。當(dāng)用append過程打開文件時(shí),文件指針指向文件的尾部,此后輸入的數(shù)據(jù)將添加在文件原有數(shù)據(jù)的后面。該過程打開的文件(即F關(guān)聯(lián)的文件)必須存在,否則也將出現(xiàn)I/O錯(cuò)誤。
      (3)讀/寫文件
      ①讀取文件內(nèi)容。在以讀的方式打開文件后,可以使用read和readln語句來讀取文件內(nèi)容,其聲明代碼格式分別為:
      procedure read([var F:’Fext;]V1[,V2,…,Vn]);
      procedure readln([var F:’text;]v1[,V2,···,Vn]);
      其中,F(xiàn)為文件變量。v1、v2、…、vn等為需要輸入的變量,其類型可以為字符串、字符、整數(shù)和實(shí)數(shù)類型。read和readln的區(qū)別為后者在讀取數(shù)據(jù)后,將文件指針移至下一行,上次讀取的數(shù)據(jù)與回車符之間的數(shù)據(jù)被忽略。
      當(dāng)讀取字符串時(shí),必須用readln過程,否則讀完一行數(shù)據(jù)后,再使用read讀取字符串將得到空串。當(dāng)讀取整型和實(shí)型數(shù)據(jù)時(shí),文件中的數(shù)據(jù)用空格分隔,且必須符合數(shù)據(jù)格式,否則將產(chǎn)生I/O錯(cuò)誤。
      在讀取文件時(shí),還必須判斷文件指針是否已到文件尾部,此時(shí)可以用Eof函數(shù)進(jìn)行判斷,其聲明代碼如下:
      function Eof[(‘var F:’rext)]:Boolean;
      當(dāng)文件指針指到尾部時(shí),該函數(shù)返回值為true。
      ②向文件寫入數(shù)據(jù)。以寫的方式打開文件后,即可向其中寫入數(shù)據(jù),寫人數(shù)據(jù)使用write和writeln過程,其聲明代碼如下:
      procedure writeln([var F:’rext;]p 1[,p2,…,pn]);
      procedure write([var F:‘rext;]p 1[,p2,‘·‘,pn]);
      與read相似,p 1、p2、…、pn等為需要輸出的變量,可以是字符串、字符、整數(shù)和實(shí)數(shù)類型。一writeln在寫入數(shù)據(jù)后還會(huì)附加上回車和換行符,而下次要寫入的數(shù)據(jù)將寫在新的一行。
      寫人數(shù)據(jù)時(shí)系統(tǒng)自動(dòng)將數(shù)據(jù)轉(zhuǎn)化為字符串形式,1)~ASCII碼的形式保存在文件中。

      (4)使用文件變量關(guān)閉文件
      無論是輸入或輸出,在對(duì)文件操作完成后,都應(yīng)關(guān)閉文件。關(guān)閉文件使用CloseFile過程,其聲明代碼如下:
      procedure CloseFile(var F);
      關(guān)閉文件后,系統(tǒng)釋放打開文件時(shí)使用的資源。特別是寫文件時(shí),在調(diào)用write和writeln過程時(shí),數(shù)據(jù)先寫入內(nèi)存緩沖區(qū),只有在緩沖區(qū)滿或關(guān)閉文件時(shí),才把數(shù)據(jù)真正寫入磁盤文件中,因此寫完數(shù)據(jù)后不關(guān)閉文件可能丟失數(shù)據(jù)。
      例2.15 使用Rewrite()過程在程序運(yùn)行的當(dāng)前目錄下創(chuàng)建一個(gè)文本文件file.txt,并向文件中增加5行文本。

      Var
      textf:TextFile; //定義文件變量textf
      S:String;
      i:Integer;
      begin 
      AssignFile(textf,'file.txt'); //將文件變量textf與當(dāng)前目錄中的“file.txt"文件關(guān)聯(lián)
      Rewrite(textf); //創(chuàng)建文件或打開已存在的文件進(jìn)行覆蓋
      for i:=1 to 5 do
      begin
      S := 'This is Line#';
      writeln(textf,s,i);
      end;
      CloseFile(textf); //關(guān)閉已打開的文件textf
      end.
      被創(chuàng)建的文件中包含5行文本,如第3行為:This is line#3。
      若要向一個(gè)已存在的文件追加新文本,應(yīng)將其中的rewrite改為append。以上程序是向文件中寫入字符串和整數(shù)。其實(shí),Object Pascal對(duì)于所有的數(shù)據(jù)類型都可以這樣處理。下面的程序演示了從文本文件中讀取數(shù)據(jù)的方法。
      寫入文件 
      Var 
      F : Textfile; //申明變量 
      Begin 
      AssignFile(F,'c:\ek.txt'); //讓變量F和C:\ek.txt關(guān)連 
      ReWrite(F); {Create a new file named ek.txt} 
      Writeln(F,'你要寫入文本文件的內(nèi)容'); //寫入文件 
      Closefile(F); //釋放變量F 
      End; 
      讀取文件 
      Var 
      F : Textfile; 
      str:String; 
      Begin 
      AssignFile(F, 'c:\ek.txt'); {Assigns the Filename} 
      Reset(F); {Opens the file for reading} 
      Readln(F, str); 
      ShowMessage('1. line of textfile:' +str); 
      Closefile(F); {Closes file F} 
      End;

      下面轉(zhuǎn)自http://blog.csdn.net/xwchen/archive/2007/07/26/1710410.aspx
      var f:text;
      ...
      AssignFile(f,'c:\1.txt');
      ReWrite(f);
      Writeln(f,'This is a test');
      CloseFile(f);
      ...
      其中Rewrite是新建文件,若換成Reset則為打開文件
      Writeln為行寫入并換行,Write為寫入不換行,Readln為讀一行并換行,Read為讀但不換行


      delphi 讀寫文件方法有很多種:
      我送你一貼:
      程序設(shè)計(jì)當(dāng)中我們時(shí)常遇到需要處理文件、目錄及驅(qū)動(dòng)器的情況,本章將對(duì)如何處理不同類型的文件進(jìn)行講述。本章包括如何使用T F i l e S t r e a m 類封裝文件的輸入/輸出以及如何利用3 2 位Wi n d o w s 的主要特征—內(nèi)存映射文件。你將學(xué)習(xí)到如何創(chuàng)建一個(gè)封裝了內(nèi)存映射文件功能的T M e m o r y M a p p e d F i l e類,并用它在文本文件中進(jìn)行文本查詢。本章還提供了一些關(guān)于選擇驅(qū)動(dòng)器、在樹型目錄中查詢文件及獲取文件版本信息的方法。本章將使你對(duì)文件、目錄及驅(qū)動(dòng) 器有深入的認(rèn)識(shí)。
      處理文件的輸入/輸出
      你將要對(duì)三種文件進(jìn)行處理:文本文件、類型文件和二進(jìn)制文件。
      以下幾節(jié)是關(guān)于文件輸入/輸出的講解。文本文件指可被任意文本編輯器讀取的A S C I I 文本。類型文件指包含由程序員定義的數(shù)據(jù)類型的文件。二進(jìn)制文件包含了其他所有的類型,它是對(duì)包含任意格式或無格式數(shù)據(jù)的文件的統(tǒng)稱。

      文本文件的處理
      本節(jié)講述使用內(nèi)建于Object Pascal 運(yùn)行時(shí)庫中的過程和函數(shù)處理文本文件的方法。在對(duì)文本文件進(jìn)行任何處理之前,首先要打開此文本文件。聲明變量:通過此變量可以來引用一個(gè)文本文件。
      打 開一個(gè)文件需要兩步:首先是A s s i g n F i l e ( ) ,它可以將文件變量與一個(gè)文件關(guān)聯(lián)起來。例如:這時(shí),你可以進(jìn)行第二步:打開文件。有三種方式打開文件:使用R e w r i t e ( )過程創(chuàng)建并打開文件;對(duì)于一個(gè)已存在的文件,此操作將使文件被覆蓋;使用R e s e t ( )過程只讀地打開一個(gè)文件;使用Append() 過程向已存在的文件追加文本。
      注意Reset()將以可讀寫方式打開類型文件和無類型文件??梢允褂肅 l o s e F i l e ( )來關(guān)閉一個(gè)已打開的文件。下例是各種調(diào)用的函數(shù)。

      文件的打開與關(guān)閉
      AssignFile :把一個(gè)外部文件名和一個(gè)文件變量相關(guān)聯(lián)
      Reset :打開一個(gè)存在的文件
      Rewrite :創(chuàng)建并打開一個(gè)新文件(或覆蓋原有文件)
      Append :以添加方式打開一個(gè)文件(只適用于文本文件)
      CloseFile :關(guān)閉一個(gè)打開的文件
      FileOpen :打開一個(gè)特定的文件并返回文件句柄
      FileCreate :創(chuàng)建一個(gè)給定文件名的文件并返回文件句柄
      FileClose :關(guān)閉一個(gè)特定句柄的文件
      后邊三個(gè)文件主要供系統(tǒng)內(nèi)部使用,在文件復(fù)制的編程中也往往會(huì)用到。它們操作的對(duì)象是文件句柄而不是文件變量。

      文件定位
      Seek:把文件當(dāng)前位置移到指定部分
      FilePos:返回文件的當(dāng)前位置
      Eoln:返回行結(jié)束標(biāo)志
      EOF:返回文件結(jié)束標(biāo)志
      FileSeek: 改變當(dāng)前文件指針的位置

      還有個(gè)問題,如何判斷文件已打開?要不要讀寫完之后就關(guān)閉文件,下次讀或者寫時(shí)再打開?

      正常情況下是這樣


      用TFileStream 
      對(duì)于通過Byte數(shù)組進(jìn)行文件操作的,在FTP中經(jīng)常會(huì)使用到,我也是在Delphi調(diào)用Web Service進(jìn)行文件的上傳和下載時(shí)找到這兩個(gè)函數(shù)的,挺好用的,推薦給大家。(申明:非本人所寫)

      1. 將Byte數(shù)組生成文件

      procedure ByteArrayToFile(const ByteArray : TByteDynArray; const FileName : string );
      var 
      Count: integer;
      F: FIle of Byte;
      pTemp: Pointer;
      begin
      AssignFile( F, FileName );
      Rewrite(F);
      try
      Count := Length( ByteArray );
      pTemp := @ByteArray[0];
      BlockWrite(F, pTemp^, Count );
      finally
      CloseFile( F );
      end;
      end;

      2. 將文件生成Byte數(shù)組

      function FiIeToByteArray(const FileName:string ):TByteDynArray;
      const 
      BLOCK_SIZE=1024;
      var
      BytesRead,BytesToWrite,Count:integer;
      F:File of Byte;
      pTemp:Pointer;
      begin
      AssignFile( F, FileName );
      Reset(F);
      try
      Count := FileSize( F );
      SetLength(Result, Count );
      pTemp := @Result[0];
      BytesRead := BLOCK_SIZE;
      while (BytesRead = BLOCK_SIZE ) do
      begin
      BytesToWrite := Min(Count, BLOCK_SIZE);
      BlockRead(F, pTemp^, BytesToWrite , BytesRead );
      pTemp := Pointer(LongInt(pTemp) + BLOCK_SIZE);
      Count := Count-BytesRead;
      end;
      finally
      CloseFile( F );
      end;
      end;


      function Encrypt(mStr: string; mKey: string): string;
      var
      I, J: Integer;
      begin
      J := 1;
      Result := '';
      for I := 1 to Length(mStr) do begin
      Result := Result + Char(Ord(mStr[I]) xor Ord(mKey[J]));
      if J + 1 <= Length(mKey) then
      Inc(J)
      else J := 1;
      end;
      {自己加步驟}
      end;


      function Decrypt(mStr: string; mKey: string): string;
      var
      I, J: Integer;
      begin
      J := 1;
      Result := '';
      {自己加步驟}
      for I := 1 to Length(mStr) do begin
      Result := Result + Char(Ord(mStr[I]) xor Ord(mKey[J]));
      if J + 1 <= Length(mKey) then
      Inc(J)
      else J := 1;
      end;
      end;

       

      procedure TForm1.Button1Click(Sender: TObject);
      const
      cKey1 = '誰想試試怎么破';
      cKey2 = '我可不愿意這樣玩(1)我可不愿意這樣玩(2)我可不愿意這樣玩(3)';
      cKey3 = 'Memo2.Text := Decrypt(Encrypt(Memo1.Text, cKey), cKey);';
      var
      S: string; //加密后的字符
      begin
      S := Encrypt(Encrypt(Encrypt(Memo1.Text, cKey1), cKey2), cKey3);
      ShowMessage(S);
      Memo2.Text := Decrypt(Decrypt(Decrypt(S, cKey3), cKey2), cKey1);
      end;

       

      http://blog.csdn.net/zisongjia/article/details/70173090

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多