使用IdTCPServer傳送Word檔的問題 |
答題得分者是:mustapha.wang
|
mufou
一般會員 發表:10 回覆:15 積分:10 註冊:2003-07-16 發送簡訊給我 |
我使用OleContainer開啟Word檔
而用IdTCPServer傳送Wrod檔 程式如下
TMemoryStream *ms1=new TMemoryStream;
//因為工具列的因素,所以Word檔開在Form2上
Form2->OleContainer1->SaveToStream(ms1);
AThread->Connection->WriteStream(ms1, true, true, 0); 而在Client端接收時
TMemoryStream *ms1=new TMemoryStream;
IdTCPClient1->ReadStream(ms1, -1, false);
ms1->SaveToFile("xxx.doc"); 此時Server端這邊會出現
Interface not supported的個錯誤訊息在Server端的
AThread->Connection->WriteStream(ms1, true, true, 0);這行程式上 感覺好像是write不出去,
整個傳送方法應該是這樣吧?
因為我有改成Memo傳送的話就可以了, 如下
Form2->OleContainer1->SaveToStream(ms1);改成
Memo1->Lines->SaveToStream(ms1);就可以了 所以請問要怎麼解決阿
要由Client端將Server端Word檔取回要怎麼弄呢?使用IdTCPServe元件的話..
謝謝
|
mufou
一般會員 發表:10 回覆:15 積分:10 註冊:2003-07-16 發送簡訊給我 |
|
mustapha.wang
資深會員 發表:89 回覆:409 積分:274 註冊:2002-03-13 發送簡訊給我 |
Form2->OleContainer1->SaveToStream(ms1);
ms1->Position=0;
AThread->Connection->WriteStream(ms1, true, true, 0); IdTCPClient1->ReadStream(ms1, -1, false);
ms1->Position=0;
ms1->SaveToFile("xxx.doc");
注意流的位置,很多关于流的函数都是从流的当前位置处理。我有时候也难了解到底是不是,反正加个Position=0没错。
久病成良医--多试
千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人 |
mufou
一般會員 發表:10 回覆:15 積分:10 註冊:2003-07-16 發送簡訊給我 |
引言: Form2->OleContainer1->SaveToStream(ms1); ms1->Position=0; AThread->Connection->WriteStream(ms1, true, true, 0); IdTCPClient1->ReadStream(ms1, -1, false); ms1->Position=0; ms1->SaveToFile("xxx.doc"); 注意流的位置,很多关于流的函数都是从流的当前位置处理。我有时候也难了解到底是不是,反正加个Position=0没错。 久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听謝謝mustapha.wang的回應 我是都沒有加ms1->Position=0;這行 不過我後來還是會遇到相同問題 在Client端連到Server端抓回Word檔後 Server端還是會出現錯誤訊息Interface not supported 在ms1->Position=0這行 所以好像還是不行 而附上測試程式 http://delphi.ktop.com.tw/loadfile.php?TOPICID=21015459&CC=470001 |
mustapha.wang
資深會員 發表:89 回覆:409 積分:274 註冊:2002-03-13 發送簡訊給我 |
|
mufou
一般會員 發表:10 回覆:15 積分:10 註冊:2003-07-16 發送簡訊給我 |
引言: Interface not supported一般与com/activex等有关,不可能是AThread->Connection->WriteStream(ms1, true, true, 0);这句的问题。应该是Form2->OleContainer1->SaveToStream(ms1);这句出错。 久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听恩....我也覺得好像是Form2->OleContainer1->SaveToStream(ms1);這邊 所以後來改用其他方法來傳 那就先這樣了 謝謝 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |