全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1329
推到 Plurk!
推到 Facebook!

請問如何避免Dll 內 String 轉 PChar會產生異常結果

尚未結案
cmc0329
一般會員


發表:1
回覆:1
積分:0
註冊:2002-12-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-27 14:22:17 IP:211.20.xxx.xxx 未訂閱
目前遇到一些問題,煩請各位先進解答,謝謝 ==== Dll .. Function SendSetupData(HostIP: PChar; SPort: Integer; SendStr: PChar): PChar; stdcall; 透過IdTCPClient取得遠方字串,再轉型PChar(str),回傳給呼叫Dll的AP === AP Function SendSetupData(HostIP: PChar; Port: Integer; SendStr: PChar): PChar; stdcall; external 'TestProgram.dll'; === 問題: 在上列宣告中,Dll回傳的資料"不一定"正確,有時會多傳一個Char, 相同的輸入就會一直是錯誤的回傳。不同的輸入就不一定會產生錯誤。 目前先將str後補四個Chr(0),結果則會是正確的。 但是這樣的方式,不太合乎常理,所以請問各位先進有否其他解法,謝謝!
------
阿正
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-31 22:38:13 IP:218.32.xxx.xxx 未訂閱
cmc0329 你好: 傳 PChar ? 這只是字串的 Pointer 指標. 應該是傳 array of char 或 array of byte 才對吧.
liorex
初階會員


發表:19
回覆:60
積分:32
註冊:2002-08-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-03 21:58:34 IP:61.64.xxx.xxx 未訂閱
試著改成回傳 ShortString 看看吧 ---------------------- 一切有為法 如夢幻泡影 如露亦如電 應做如是觀 ----------------------
cmc0329
一般會員


發表:1
回覆:1
積分:0
註冊:2002-12-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-04 11:13:41 IP:211.20.xxx.xxx 未訂閱
感謝您們的答覆, 因受限與異種語言的傳遞,所以還是使用PChar 至於PChar 與 Array Of Char 的差異性能否,再說明,謝謝。 而ShortString於C可以接受嗎? 因為提供一個Dll給Oracle呼叫(與C方式雷同),所以有諸多限制,煩請再說明,謝謝。 阿正
------
阿正
系統時間:2024-06-02 0:51:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!