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

請教大家在 BCB/DELPHI 叫用 DELPHI DLL 的問題

尚未結案
bdedownload
一般會員


發表:7
回覆:10
積分:3
註冊:2003-05-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-29 10:07:36 IP:61.221.xxx.xxx 未訂閱
請教大家在 BCB/DELPHI 叫用 DELPHI DLL 的問題: 我是 BCB 初學者, 試利用 DELPHI 製作一個 DLL, 傳入兩個字串, 輸出一 個字串,在 BCB/DELPHI 中叫用此 DLL, 並利用 ShowMessage() 顯示: 在 bcb help 資料找到對應參數型別是: PChar 32-bit pointer to characters unsigned char * typedef String Delphi AnsiString AnsiString typedef 不過如果在 DELPHI 宣告參數型態為 string [DELPHI DLL]function ChgCode(ekey:string;eData:string):string; stdcall; export; [DELPHI AP]function ChgCode(ekey:string;eData:string):string; external 'desap.dll'; [BCB AP]extern "C" __declspec(dllimport) AnsiString __stdcall ChgCode(AnsiString,AnsiString); 的話, 不論在 BCD 或 DELPHI 呼叫完成後都會產生錯誤警告. 改為 pchar : [DELPHI DLL]function ChgCode(ekey:pchar;eData:pchar):pchar; stdcall; export; [DELPHI AP]function ChgCode(ekey:pchar;eData:pchar):pchar; external 'desap.dll'; [BCB AP]extern "C" __declspec(dllimport) unsigned char * __ stdcall ChgCode(unsigned char *,unsigned char *); 則在 DELPHI 不會產生錯誤警告且可正常以 PChar 接收與處理傳回值, 可是不知道如何在 BCB將 unsigned char * 轉為 AnsiString, 無 法順利顯示.... 並沒有在舊post中找到解法, 不知道如何解決? 有沒有其他要注意的? 或是另有其他宣告呼叫方法可以處理? 謝謝 =
Zard
尊榮會員


發表:24
回覆:396
積分:539
註冊:2003-11-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-29 21:52:48 IP:61.64.xxx.xxx 未訂閱
引言: 請教大家在 BCB/DELPHI 叫用 DELPHI DLL 的問題: 我是 BCB 初學者, 試利用 DELPHI 製作一個 DLL, 傳入兩個字串, 輸出一 個字串,在 BCB/DELPHI 中叫用此 DLL, 並利用 ShowMessage() 顯示: 在 bcb help 資料找到對應參數型別是: PChar 32-bit pointer to characters unsigned char * typedef String Delphi AnsiString AnsiString typedef 不過如果在 DELPHI 宣告參數型態為 string [DELPHI DLL]function ChgCode(ekey:string;eData:string):string; stdcall; export; [DELPHI AP]function ChgCode(ekey:string;eData:string):string; external 'desap.dll'; [BCB AP]extern "C" __declspec(dllimport) AnsiString __stdcall ChgCode(AnsiString,AnsiString); 的話, 不論在 BCD 或 DELPHI 呼叫完成後都會產生錯誤警告. 改為 pchar : [DELPHI DLL]function ChgCode(ekey:pchar;eData:pchar):pchar; stdcall; export; [DELPHI AP]function ChgCode(ekey:pchar;eData:pchar):pchar; external 'desap.dll'; [BCB AP]extern "C" __declspec(dllimport) unsigned char * __ stdcall ChgCode(unsigned char *,unsigned char *); 則在 DELPHI 不會產生錯誤警告且可正常以 PChar 接收與處理傳回值, 可是不知道如何在 BCB將 unsigned char * 轉為 AnsiString, 無 法順利顯示.... 並沒有在舊post中找到解法, 不知道如何解決? 有沒有其他要注意的? 或是另有其他宣告呼叫方法可以處理? 謝謝 =
要將unsigned char*轉為 AnsiString其實很簡單, 給你一個範例
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  unsigned char* buf = "123";
  AnsiString szTxt;
  szTxt = (char*)buf;
  ShowMessage(szTxt);
}
bdedownload
一般會員


發表:7
回覆:10
積分:3
註冊:2003-05-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-01 12:19:50 IP:140.127.xxx.xxx 未訂閱
謝謝您. 已依您的指點解決問題了.. =
系統時間:2024-11-26 13:40:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!