當前位置:視頻教程網 > 教育知識 > 正文

        createfile函數,BCB中CreateFile該怎么用?

        發布:2023-06-06 19:48:00編輯:視頻君來源:視頻教程網

        目錄

        1,BCB中CreateFile該怎么用?

        BCB中CreateFile該怎么用?

        {
        AnsiString FileName="e:\\1.txt";
        HANDLE TheFile;
        TheFile=CreatFile(FileName.c_str().GENERIC_WRITE,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

        if(TheFile==INVALID_HANDLE_VALUE)
        {
        ShowMessage("無法新建文件!");
        return;
        }
        ::CloseHandle(TheFile);
        }

        2,C語言中打開文件open函數和API中的打開文件CreateFile函數有什么區別聯系?

        C語言的函數 可以和Turbo C的函數做同一個理解,
        Turbo C 是在DOS環境下運行的,是一個8位的C語言環境,
        WIN32 API 顧名思義 是在32位的環境下運行的,
        如此 Turbo C顯然不能調用WIN32的API

        如果你是初學者,想學習C語言。
        強烈建議你先用Turbo C處理書本上一些例題。
        然后用VC學習API
        用VC理由如下:
        1、WIN32 API屬于微軟,當然要用微軟公司開發的VC。
        2、網絡上鋪天蓋地的電子書、視頻都是關于VC的。
        3、企業基本都在用windows操作系統

        至于什么DEV C;WINNER C; BOLAND C++建議根本不要碰——浪費時間……

        最后 祝你好運!

        3,c語言createfile函數用法

        1、CreateFile 是一個多功能的函數,可打開或創建以下對象,并返回可訪問的句柄:控制臺,通信資源,目錄(只讀打開),磁盤驅動器,文件,郵槽,管道。 2、例程: #include int main(){ HANDLE hf = CreateFile(TEXT("C:\\testa.bin"), GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0); DWORD written; WriteFile(hf, "\x0f\xff\xff\xff\xff\xff", 6, &written, 0); CloseHandle(hf); hf = CreateFile(TEXT("c:\\testb.bin"), GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0); SetFilePointer(hf, 0, 0, FILE_END); WriteFile(hf, "\x0f\xff\xff\xff\xff\xff", 6, &written, 0); CloseHandle(hf); return 0;}

        4,VB怎么用API函數·詳細的?

        一、在VB中聲明API函數有兩種方法:如果我們只在某個窗體中使用API函數,我們可以在窗體代碼的General部分聲明它: 聲明的語法是: Private Declare Function ... Private Declare Sub..... 這里必須采用Private聲明,因為這個API函數只能被一個窗體內的程序所調用。 如果我們的程序有多個窗體構成,而且我們需要在多個窗體中使用同一個API函數,就需要在模塊中聲明了。 先添加一個模塊(如圖示), 然后采用如下語法聲明: Public Declare Function.... Public Declare Sub.... Public聲明的含義是把API函數作為一個公共函數或過程,在一個工程中的任何位置(包括所有的窗體和模塊)都能直接調用它。 聲明完畢我們就能在程序中使用此API函數了。 二、可采用以下幾種方式使用API函數,以SetWindowPos函數為例: (1)忽略函數返回值的調用: SetWindowPos Form1.hWnd, -2 ,0 ,0 ,0, 0, 3 注意此時函數的參數是不加括號的。 (2)Call方法調用: Call SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3) 注意這里需要加上括號,但我們不取回函數的返回值。 (3)取得函數返回值的調用: MyLng = SetWindowPos(Form1.hWnd, -2, 0, 0, 0, 3) 此時需要加上括號,而且我們必須事先定義一個變量(變量的類型與函數返回值類型相同)來存儲API函數的返回值。 三、幾個問題的說明: (1)聲明中的Lib 和 Alias 是怎么回事 一般情況下WIN32API函數總是包含在Windows系統自帶的或是其它公司提供的動態連接庫DLL中,而Declare語句中的Lib關鍵字就用來指定DLL(動態連接庫)文件的路徑,這樣VB才能找到這個DLL文件,然后才能使用其中的API函數。如果我們只是列出DLL文件名而不指出其完整的路徑的話,VB會自動到.EXE文件所在目錄、當前工作目錄、WINDOWS\SYSTEM目錄、WINDOWS目錄下搜尋這個DLL文件。所以如果所要使用DLL文件不在上述幾個目錄下的話,我們應該指明其完整路徑。 Alias用于指定API函數的別名,如果我們調用的API函數要使用字符串(參數中包含String型)的話,Alias關鍵字是必須的。這是因為在ANSI和Unicode字符集中同一API函數的名稱可能是不一樣的,為了保證不出現聲明錯誤,我們使用Alias關鍵字指出API函數的別名,一般來說在WIN9X平臺下我們把API函數名后加一個大寫A作為別名即可。 (2)常見的API參數類型的說明 API函數的參數中最常見的是長整Long型數據類型,例如API中的句柄、一些特定的常量、函數的返回值都是此類型 的值;另外幾種常見的參數類型有:整型Integer、Byte型、String型等。 (3)聲明中的ByVal是作什么用的 這跟VB的參數傳遞方式有關,在默認情況下VB是通過地址傳遞方式傳遞函數的參數、而有些API函數要求必須采用傳值方式來傳遞函數參數(這兩種參數傳遞方式是不同的,前者傳遞的是一個指針,而后者要求是參數真實的值)。這樣就會發生錯誤,解決的辦法是在API函數參數聲明的前面加上ByVal關鍵字,這樣VB就采用傳值方式傳遞參數了。 (4)怎樣得到完整的API函數聲明 VB自帶了API文本查看器API TEXT VIEWER,我們可以在其中找到API函數的完整聲明,然后把它粘貼到程序中即可。 如下所示: Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

        5,delphi 怎么判斷一個文本文件正在被使用

        使用CreateFile函數來判斷文件是否打開,編寫以下函數就可以判斷文件是否已打開了,代碼如下:

        function IsFileInUse(AName: string): boolean;
        var
        hFileRes: HFILE;
        begin
        Result := False;
        if not FileExists(AName) then exit;
        hFileRes := CreateFile(PChar(AName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
        Result := hFileRes = INVALID_HANDLE_VALUE;
        if not Result then
        CloseHandle(hFileRes);
        end;
        使用方式:
        if IsFileInUse('d:\test.txt') then
        ShowMessage('文件在使用.');
        else
        ShowMessage('文件沒有使用.');

        CreateFile函數說明:

        HANDLE CreateFile(

          LPCTSTR lpFileName, //指向文件名的指針

          DWORD dwDesiredAccess, //訪問模式(寫/讀)

          DWORD dwShareMode, //共享模式

          LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全屬性的指針

          DWORD dwCreationDisposition, //如何創建

          DWORD dwFlagsAndAttributes, //文件屬性

          HANDLE hTemplateFile //用于復制文件句柄

          );

          參數列表

          lpFileName String 要打開的文件的名字

          dwDesiredAccess Long 如果為 GENERIC_READ 表示允許對設備進行讀訪問;如果為
        GENERIC_WRITE 表示允許對設備進行寫訪問(可組合使用);如果為零,表示只允許獲取與一個設備有關的信息

          dwShareMode Long, 零表示不共享; FILE_SHARE_READ 和/或 FILE_SHARE_WRITE
        表示允許對文件進行共享訪問

          lpSecurityAttributes SECURITY_ATTRIBUTES,
        指向一個SECURITY_ATTRIBUTES結構的指針,定義了文件的安全特性(如果操作系統支持的話)

          dwCreationDisposition Long,下述常數之一:

          CREATE_NEW 創建文件;如文件存在則會出錯

          CREATE_ALWAYS 創建文件,會改寫前一個文件

          OPEN_EXISTING 文件必須已經存在。由設備提出要求

          OPEN_ALWAYS 如文件不存在則創建它

          TRUNCATE_EXISTING 講現有文件縮短為零長度

          dwFlagsAndAttributes Long, 一個或多個下述常數

          FILE_ATTRIBUTE_ARCHIVE 標記歸檔屬性

          FILE_ATTRIBUTE_COMPRESSED 將文件標記為已壓縮,或者標記為文件在目錄中的默認壓縮方式

          FILE_ATTRIBUTE_NORMAL 默認屬性

          FILE_ATTRIBUTE_HIDDEN 隱藏文件或目錄

          FILE_ATTRIBUTE_READONLY 文件為只讀

          FILE_ATTRIBUTE_SYSTEM 文件為系統文件

          FILE_FLAG_WRITE_THROUGH 操作系統不得推遲對文件的寫操作

          FILE_FLAG_OVERLAPPED 允許對文件進行重疊操作

          FILE_FLAG_NO_BUFFERING 禁止對文件進行緩沖處理。文件只能寫入磁盤卷的扇區塊

          FILE_FLAG_RANDOM_ACCESS 針對隨機訪問對文件緩沖進行優化

          FILE_FLAG_SEQUENTIAL_SCAN 針對連續訪問對文件緩沖進行優化

          FILE_FLAG_DELETE_ON_CLOSE 關閉了上一次打開的句柄后,將文件刪除。特別適合臨時文件

          也可在Windows NT下組合使用下述常數標記:

          SECURITY_ANONYMOUS, SECURITY_IDENTIFICATION,
        SECURITY_IMPERSONATION, SECURITY_DELEGATION,
        SECURITY_CONTEXT_TRACKING, SECURITY_EFFECTIVE_ONLY

          hTemplateFile Long, 如果不為零,則指定一個文件句柄。新文件將從這個文件中復制擴展屬性

        返回值

          如執行成功,則返回文件句柄。

          INVALID_HANDLE_VALUE表示出錯,會設置GetLastError。即使函數成功,但若文件存在,且指定了CREATE_ALWAYS
        或 OPEN_ALWAYS,GetLastError也會設為ERROR_ALREADY_EXISTS

        6,delphi判斷文件是否存在問題

        你看看你寫的這句“if FileExists(pchar(extractFilePath(application.exeName)+'newFile\123.txt')); ”,后面還帶了一個分號“;” ,你先把問題弄好再往下看吧~,首先如果在想在某個文件夾中創建文本話,你首先得保證這個文件夾的存在,要不怎么找到他的路徑?然后你寫的“memo1.Lines.SaveToFile(extractFilePath(application.exeName)+'newFile\123.txt'); ”,里面根本用不到pchar你為什么畫蛇添足??你知道pchar和string有什么不同嗎?不懂不要亂用好不?然后下面的代碼
        procedure TForm1.Button1Click(Sender: TObject);
        begin
        memo1.Lines.SaveToFile(extractFilePath(application.exeName)+'newFile\123.txt');

        if FileExists(extractFilePath(application.exeName)+'newFile\123.txt')
        then
        label2.Caption :='創建成功'
        else
        label2.Caption :='創建失敗';
        end;
        上面的代碼可以在一個已經存在的newfile文件夾下創建123.txt并寫入內容(無論newfile文件夾下有幾個txt,只要windows允許就行)!

        熱門排行

        主站蜘蛛池模板: 日本人指教视频| 97049.com| 欧美乱强伦xxxxx高潮| 四虎在线视频免费观看| 0urp|ay加速器| 好男人资源在线手机免费| 亚洲视频在线免费播放| 高分少女免费观看第一季| 在线播放高清国语自产拍免费| 久久久久久久综合狠狠综合| 欧美换爱交换乱理伦片老| 动漫美女被爆羞羞免费| 黄网站色视频免费看无下截| 在线国产小视频| 中文字幕一区二区三区日韩精品| 欧美jizz18欧美| 伊人五月天综合| 色哟哟免费在线观看| 国产欧美在线观看一区| 99久久国产亚洲综合精品 | 99精品国产在热久久| 护士又湿又紧我要进去了| 免费毛片a线观看| 里番本子侵犯肉全彩3d| 国产精品免费观看| a毛片成人免费全部播放| 新疆女人啪啪毛片| 亚洲精品乱码久久久久久蜜桃图片| 色先锋影音资源| 国产成人综合洲欧美在线| 91大神在线免费观看| 嫩b人妻精品一区二区三区| 久久亚洲精品无码aⅴ大香| 欧美中文字幕在线观看| 亚洲综合色婷婷在线观看| 美女极度色诱视频国产| 国产啪亚洲国产精品无码| 18男男gay同性视频| 天天干在线播放| 两个人一起差差差30分| 日本韩国一区二区|