導航:首頁 > 文件教程 > delphiwordstart

delphiwordstart

發布時間:2024-03-22 05:59:40

『壹』 delphi怎麼判斷一個文本文件正在被使用

使用CreateFile函數來判斷文件是否打開,編寫以下函數就可以判斷文件是否已打開了,代碼如下:x0dx0ax0dx0afunction IsFileInUse(AName: string): boolean;x0dx0avarx0dx0a hFileRes: HFILE;x0dx0abeginx0dx0a Result := False;x0dx0a if not FileExists(AName) then exit;x0dx0a hFileRes := CreateFile(PChar(AName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);x0dx0a Result := hFileRes = INVALID_HANDLE_VALUE;x0dx0a if not Result thenx0dx0a CloseHandle(hFileRes);x0dx0aend;x0dx0a使用方式:x0dx0a if IsFileInUse('d:\test.txt') thenx0dx0a ShowMessage('文件在使用.');x0dx0a elsex0dx0a ShowMessage('文件沒有使用.');x0dx0ax0dx0aCreateFile函數說明:x0dx0ax0dx0aHANDLE CreateFile(x0dx0ax0dx0aLPCTSTR lpFileName, //指向文件名的指針x0dx0ax0dx0aDword dwDesiredAccess, //訪問模式(寫/讀)x0dx0ax0dx0aDWORD dwShareMode, //共享模式x0dx0ax0dx0aLPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全屬性的指針x0dx0ax0dx0aDWORD dwCreationDisposition, //如何創建x0dx0ax0dx0aDWORD dwFlagsAndAttributes, //文件屬性x0dx0ax0dx0aHANDLE hTemplateFile //用於復制文件句柄x0dx0ax0dx0a);x0dx0ax0dx0a參數列表x0dx0ax0dx0alpFileName String 要打開的文件的名字x0dx0ax0dx0adwDesiredAccess Long 如果為 GENERIC_READ 表示允許對設備進行讀訪問;如果為x0dx0aGENERIC_WRITE 表示允許對設備進行寫訪問(可組合使用);如果為零,表示只允許獲取與一個設備有關的信息x0dx0ax0dx0adwShareMode Long, 零表示不共享; FILE_SHARE_READ 和/或 FILE_SHARE_WRITEx0dx0a表示允許對文件進行共享訪問 SECURITY_ATTRIBUTES,x0dx0a指向一個SECURITY_ATTRIBUTES結構的指針,定義了文件的安全特性(如果操作系統支持的話) Long,下述常數之一:x0dx0ax0dx0aCREATE_NEW 創建文件;如文件存在則會出錯x0dx0ax0dx0aCREATE_ALWAYS 創建文件,會改寫前一個文件x0dx0ax0dx0aOPEN_EXISTING 文件必須已經存在。由設備提出要求x0dx0ax0dx0aOPEN_ALWAYS 如文件不存在則創建它x0dx0ax0dx0aTRUNCATE_EXISTING 講現有文件縮短為零長度 Long, 一個或多個下述常數x0dx0ax0dx0aFILE_ATTRIBUTE_ARCHIVE 標記歸檔屬性x0dx0ax0dx0aFILE_ATTRIBUTE_COMPRESSED 將文件標記為已壓縮,或者標記為文件在目錄中的默認壓縮方式x0dx0ax0dx0aFILE_ATTRIBUTE_NORMAL 默認屬性x0dx0ax0dx0aFILE_ATTRIBUTE_HIDDEN 隱藏文件或目錄x0dx0ax0dx0aFILE_ATTRIBUTE_READONLY 文件為只讀x0dx0ax0dx0aFILE_ATTRIBUTE_SYSTEM 文件為系統文件x0dx0ax0dx0aFILE_FLAG_WRITE_THROUGH 操作系統不得推遲對文件的寫操作x0dx0ax0dx0aFILE_FLAG_OVERLAPPED 允許對文件進行重疊操作x0dx0ax0dx0aFILE_FLAG_NO_BUFFERING 禁止對文件進行緩沖處理。文件只能寫入磁碟卷的扇區塊x0dx0ax0dx0aFILE_FLAG_RANDOM_ACCESS 針對隨機訪問對文件緩沖進行優化x0dx0ax0dx0aFILE_FLAG_SEQUENTIAL_SCAN 針對連續訪問對文件緩沖進行優化x0dx0ax0dx0aFILE_FLAG_DELETE_ON_CLOSE 關閉了上一次打開的句柄後,將文件刪除。特別適合臨時文件x0dx0ax0dx0a也可在Windows NT下組合使用下述常數標記:x0dx0ax0dx0aSECURITY_ANONYMOUS, SECURITY_IDENTIFICATION,x0dx0aSECURITY_IMPERSONATION, SECURITY_DELEGATION,x0dx0aSECURITY_CONTEXT_TRACKING, SECURITY_EFFECTIVE_ONLYx0dx0ax0dx0ahTemplateFile Long, 如果不為零,則指定一個文件句柄。新文件將從這個文件中復制擴展屬性x0dx0ax0dx0a返回值x0dx0ax0dx0a如執行成功,則返迴文件句柄。x0dx0ax0dx0aINVALID_HANDLE_VALUE表示出錯,會設置GetLastError。即使函數成功,但若文件存在,且指定了CREATE_ALWAYSx0dx0a或 OPEN_ALWAYS,GetLastError也會設為ERROR_ALREADY_EXISTS

『貳』 delphi內如何嵌入打開WORD,看網上是添加OleContainer控制項,但不知道如何寫代碼能讓文檔在此控制項中打開

Delphi中利於 RIchEdit 閱讀 WORD內容:
.....
procere TForm1.Button1Click(Sender: TObject);
var
fnm: String;
WordApp,WordDoc: Variant;
sContext: String;
begin
if OpenDialog1.Execute then begin
fnm := OpenDialog1.FileName;
Label2.Caption := fnm;
WordApp := CreateOleObject('Word.Application');
try
WordApp.Visible := False;
WordDoc := WordApp.Documents.Open(fnm);
WordApp.Selection.WholeStory;
sContext := WordDoc.Range.Text;
RichEdit1.Text := sContext;
finally
WordApp.Quit;
end;
end;
end;

『叄』 為什麼我用delphi調的word不能啟動

用 delphi 調用 word ,通常是使用 OleCreateObject 函數,來啟動 word 程序,如:

CreateOleObject('Word.Application')

此外,如果不需要考慮 word 控制等,只是單純的專啟動 word,可以使用屬 ShellExecute 或是 WinExec 等函數啟動程序。

如果 word 不能啟動,建議檢查:

1、 word 軟體的安裝情況,比如某些精簡安裝版的 word 可能由於注冊表中某些登記不完整,會導致出錯;運行的電腦系統中 word 是否能正確運行等等。

2、調用 word 的命令是否有誤。

『肆』 delphi讀取WORD文檔每一頁的內容

uses ComObj,WordXp;

var wordapp, WordDoc, PageRange: Variant;
sContext: string;
i, nPageCounts, nStart, nEnd : Integer;
begin
wordapp := CreateOleObject('Word.Application');
try
wordapp.Visible := True;
if dlgOpen1.Execute = False then Exit;
WordDoc := wordapp.Documents.Open(dlgOPen1.FileName);
//文檔總頁數
nPageCounts := wordapp.Selection.Information[wdNumberOfPagesInDocument];

//如果只有一頁 那麼全選就OK了
if nPageCounts = 1 then
begin
wordapp.Selection.WholeStory;
mmo1.Lines.Add('=============第'+IntToStr(nPageCounts)+'頁內容:===================');
mmo1.Lines.Add(wordapp.Selection.Text);
Exit;
end;

nStart := -1;
nEnd := -1;
//循環獲取文檔頁中的內容
for i := 1 to nPageCounts do
begin
//定位到第i頁
PageRange := wordapp.Selection.GoTo(wdGoToPage, wdGoToNext, IntToStr(i));
//如果第i頁是最後一頁 那麼直接將游標移動到最後 並輸出內容
if i = nPageCounts then
begin
wordapp.Selection.EndKey(wdStory,wdExtend);
sContext := WordApp.Selection.Range.Text;
mmo1.Lines.Add('=============第'+IntToStr(i)+'頁內容:===================');
mmo1.Lines.Add(sContext);
Exit;
end;

//取第i頁的頁首位置作為開始位置
nStart := wordapp.Selection.Start;
//定位到i+1頁
PageRange := wordapp.Selection.GoTo(wdGoToPage, wdGoToNext, IntToStr(i+1));
//取第i+1頁的頁首位置作為結束位置
nEnd := wordapp.Selection.Start;
//根據開始位置和結束位置確定文檔選中的內容(第i頁的內容)
WordDoc.Range(nStart,nEnd).Select;
sContext := WordDoc.Range.Text;
//輸出內容
mmo1.Lines.Add('=============第'+IntToStr(i)+'頁內容:===================');
mmo1.Lines.Add(sContext);
nStart := -1;
nEnd := -1;
end;
finally
wordapp.Quit;
end;
end;

昨天沒有測試好 這個應該沒有問題了吧 試一下吧

閱讀全文

與delphiwordstart相關的資料

熱點內容
手機qq怎樣隱身登陸 瀏覽:339
cdelete導致程序崩潰 瀏覽:783
小米4手機設置鈴聲在哪個文件夾里 瀏覽:184
linuxnet論壇源碼下載 瀏覽:241
手機修改文件後綴名 瀏覽:32
jsvideofullscreen 瀏覽:120
夢幻模擬戰1修改代碼 瀏覽:928
cad有nc編程功能嗎怎麼用 瀏覽:573
js調用外部js 瀏覽:273
蘋果手機照片後期軟體 瀏覽:333
linux自動備份oracle資料庫 瀏覽:447
ios重啟app的代碼 瀏覽:565
裝了win10文件加鎖打不開 瀏覽:713
蘋果電腦怎麼新建一個pdf的文件 瀏覽:379
wps顯示word不是一個有效文件 瀏覽:48
凱立德地圖升級工具 瀏覽:474
linux系統參看log 瀏覽:416
用手機設置無線密碼是多少 瀏覽:829
銷售季度績效考核怎麼體現數據 瀏覽:335
c盤的文件刪除不了 瀏覽:589

友情鏈接