精品国产亚洲一区二区三区,男女作爱在线观看免费网站,欧美的又大又长做禁片A片,97国产精品人妻无码久久久

  • 相關(guān)軟件
    >Delphi中用于讀寫(I/O)的三種文件類型 創(chuàng)建者:webmaster 更新時間:2005-07-02 01:33

    一.舊pascal文件類型
        用舊文件變量表示的文件類型,比如 F:text,F:File. 定義了三類:有類型,無類型,字符類型以及一些Delphi的文件操作函數(shù).比如:AssignPrn,Writeln,這些文件類和Windows文件句柄不兼容


    二.Windows文件句柄(handle)
        面向?qū)ο蟮腜ascal的文件句柄封裝了Windows文件句柄類型,文件操作函數(shù)庫則封裝了Windows API函數(shù),比如"Fileread"就是調(diào)用了Windows API 函數(shù)"ReadFile",Delphi提供了一個Windows API操作接口如果熟悉Windows API,可以用Windows文件句進(jìn)行文件操作.


    三.文件流(File Streams)
        文件流是TFileStream類的對象實例,文件流是高層的文件操作類型,TFileStream提供了一個句柄屬性.用此屬性可操作Windows文件句柄類型.


    如何選擇文件類型


          Windows文件句柄是較底層的文件操作類型,提供了靈活的同步及異步文件讀寫控制,以下提供用Windows文件句柄類型對文件同步及異步操作的偽代碼描述:
    同步操作:
    bResult = ReadFile(hFile, &inBuffer, nBytesToRead, &nBytesRead, NULL) ;
    // check for eof
    if (bResult &&  nBytesRead == 0, ) {
     // we're at the end of the file
     }


    異步操作:
    // set up overlapped structure fields 
    gOverLapped.Offset     = 0;
    gOverLapped.OffsetHigh = 0;
    gOverLapped.hEvent     = NULL;
     
    // attempt an asynchronous read operation
    bResult = ReadFile(hFile, &inBuffer, nBytesToRead, &nBytesRead,
        &gOverlapped) ;
     
    // if there was a problem, or the async. operation's still pending ...
    if (!bResult)
    {
        // deal with the error code
        switch (dwError = GetLastError())


        {
            case ERROR_HANDLE_EOF:
            {
                // we're reached the end of the file
                // during the call to ReadFile
     
                // code to handle that
            }
     
            case ERROR_IO_PENDING:
            {
                // asynchronous i/o is still in progress
     
                // do something else for a while
                GoDoSomethingElse() ;
     
                // check on the results of the asynchronous read
                bResult = GetOverlappedResult(hFile, &gOverlapped,


                    &nBytesRead, FALSE) ;
     
                // if there was a problem ...
                if (!bResult)
                {
                    // deal with the error code
                    switch (dwError = GetLastError())
                    {
                        case ERROR_HANDLE_EOF:
                        {
                            // we're reached the end of the file
                            file  during asynchronous operation
                        }
     
                        // deal with other error cases


                    }
                }
            } // end case
     
            // deal with other error cases
     
        } // end switch
    } // end if
     
    雖然Windows文件句柄提供靈活的文件控制,但須編寫更多的出錯處理代碼,如果對
    WindowsAPI不熟悉,使用Delphi推薦的舊文件變量類型.


           Delphi的舊文件類型使用AssignFile,使文件變量和物理文件關(guān)聯(lián),通過Delphi定義的
    對文件變量的各種操作,完成文件的存取和操作.使用方便.以下提供對文件變量類
    型的操作代碼描述:
    var


      F: TextFile;
      S: string;
    begin
      if OpenDialog1.Execute then          { Display Open dialog box }
      begin
        AssignFile(F, OpenDialog1.FileName);   { File selected in dialog box }
        Reset(F);
        Readln(F, S);                          { Read the first line out of the file }
        Edit1.Text := S;                       { Put string in a TEdit control }
        CloseFile(F);
      end;
    end;


          文件流是流(stream classes)的子類,所以使用他的一個優(yōu)點就是能自動繼承其父類的屬性他能很容易的和其他的流類互操作,比如你如果想把一塊動態(tài)內(nèi)存塊寫入磁盤,可以使用一個TFileStream和一個TMemoryStream來完成.

    相關(guān)文章
    本頁查看次數(shù):