線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1628
推到 Plurk!
推到 Facebook!

关于dephi如何操作word的问题

答題得分者是:careychen
lwd188
一般會員


發表:13
回覆:33
積分:9
註冊:2005-02-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-10-12 17:10:15 IP:218.25.xxx.xxx 訂閱

[code delphi]
請在此區域輸入程式碼
[/code]
procedure TForm3.SpeedButton7Click(Sender: TObject);
var
MemSize: Integer;
Buffer: PChar;
MyFile: TFileStream;
Stream: TBlobStream;
begin
OpenDialog1.Filter:='WORD文档(*.DOC)|*.DOC'
;{从对话窗选择文件}
if OpenDialog1.Execute then begin
MyFile:=TFileStream.Create
(OpenDialog1.FileName,fmOpenRead);
with Q_shijuan do {‘table1’为含BLOB字段的表名}
begin
Open;
Edit;
Stream := TBlobStream.Create(FieldByName('Doc')
as TBlobField, bmWrite);
{‘Doc’为BLOB字段名}
MemSize := MyFile.Size;
Inc(MemSize); {Make room for the
buffer's null terminator.}
Buffer := AllocMem(MemSize);
{Allocate the memory.}
try
Stream.Seek(0, soFromBeginning);
{Seek 0 bytes from the stream's end point}
MyFile.Read(Buffer^,MemSize);
Stream.Write(Buffer^,MemSize);
finally
MyFile.Free;
Stream.Free;
end;
try
Post;
except
halt;
end;
end;
OleContainer3.CreateObjectFromFile
(OpenDialog1.FileName,False);
OleContainer3.Run;{Doc_ole为ToleContainer构件名}
end;
end;
以上是原代码,用的是interbase数据库,想实现把word数据传到数据库里,但执行后,总出现'InValid class typecast'的错误提示,请各位前辈指点,万分感谢!
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-10-12 21:44:10 IP:59.126.xxx.xxx 訂閱
hi,您的標題跟您的內文問的似乎不大一樣
如果您是想問如何將 Word 存入資料庫內的話,您原本寫的方式就比較複雜了一點,下面是改寫您的程式,
簡化後的結果,參考看看

[code delphi]
procedure TForm3.SpeedButton7Click(Sender: TObject);
begin
OpenDialog1.Filter:='WORD文档(*.DOC)|*.DOC';{从对话窗选择文件}
if OpenDialog1.Execute then begin
with Q_shijuan do {‘table1’为含BLOB字段的表名}
try
Open;
Edit;
TBlobField(FieldByName('Doc')).LoadFromFile(OpenDialog1.FileName);
Post;
Close;
except
halt;
end;
OleContainer3.CreateObjectFromFile(OpenDialog1.FileName,False);
OleContainer3.Run;{Doc_ole为ToleContainer构件名}
end;
end;
[/code]
------
價值的展現,來自於你用哪一個角度來看待它!!
編輯記錄
careychen 重新編輯於 2008-10-12 21:47:09, 註解 無‧
lwd188
一般會員


發表:13
回覆:33
積分:9
註冊:2005-02-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-10-12 23:03:51 IP:218.25.xxx.xxx 訂閱
谢谢careychen前辈
您那样的代码我刚开始也试过,可以正常运行,不过,传到interbase数据库里,是乱码。。。。。不知道什么原因?
編輯記錄
lwd188 重新編輯於 2008-10-12 23:08:12, 註解 無‧
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-10-12 23:41:00 IP:59.126.xxx.xxx 訂閱
應該不是亂碼,而是 Binary code 吧~~~ 不然您覺得存進去的應該是純文字? 是 word 裡的文字?
您現在存進去的是一個 DOC 檔,不是 txt 檔哦!!

===================引 用 lwd188 文 章===================
谢谢careychen前辈
您那样的代码我刚开始也试过,可以正常运行,不过,传到interbase数据库里,是乱码。。。。。不知道什么原因?
------
價值的展現,來自於你用哪一個角度來看待它!!
lwd188
一般會員


發表:13
回覆:33
積分:9
註冊:2005-02-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-10-13 09:36:51 IP:218.25.xxx.xxx 訂閱
谢谢careychen前辈
果然如前辈所说,谢谢,问题已解决。
系統時間:2024-04-29 16:25:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!