請教大家在 BCB/DELPHI 叫用 DELPHI DLL 的問題 |
尚未結案
|
bdedownload
一般會員 發表:7 回覆:10 積分:3 註冊:2003-05-14 發送簡訊給我 |
請教大家在 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 發送簡訊給我 |
引言: 請教大家在 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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |