c头文件定义:
extern "C"
{
__declspec( dllexport ) char * APIENTRY CardRW(char* cardType, char* userNo,
char* unitNo, char* password,
char* addMinute,char* SaleCount,
char* total, char* thisAmount, char* note);
}delphi定义: tCardRW = function(cardType: pchar; userNo: pchar; unitNo: pchar; password: pchar;
addMinute: pchar; SaleCount: pchar; total: pchar; thisAmount: pchar; note: pchar): pchar; stdcall;可以调用,但是
tCardRW = function(var cardType: pchar; var userNo: pchar; var unitNo: pchar; var password: pchar;
var addMinute: pchar; var SaleCount: pchar; var total: pchar; var thisAmount: pchar; var note: pchar): pchar; stdcall;
确出错,为什么?我要求是可以回写参数的,
和dll里面的处理有什么关系吗?
extern "C"
{
__declspec( dllexport ) char * APIENTRY CardRW(char* cardType, char* userNo,
char* unitNo, char* password,
char* addMinute,char* SaleCount,
char* total, char* thisAmount, char* note);
}delphi定义: tCardRW = function(cardType: pchar; userNo: pchar; unitNo: pchar; password: pchar;
addMinute: pchar; SaleCount: pchar; total: pchar; thisAmount: pchar; note: pchar): pchar; stdcall;可以调用,但是
tCardRW = function(var cardType: pchar; var userNo: pchar; var unitNo: pchar; var password: pchar;
var addMinute: pchar; var SaleCount: pchar; var total: pchar; var thisAmount: pchar; var note: pchar): pchar; stdcall;
确出错,为什么?我要求是可以回写参数的,
和dll里面的处理有什么关系吗?
跟dll里面的处理没关系
var pp:pchar;
begin
pp:='02';
test(pp);
showmessage(pp);
end;function test(var p:pchar):string;
begin
showmessage(p);
p:='s';
result:='0';
end;
把var关键字去掉 pp的值还是不变啊
应该用strcpy类似的函数呀
function test(p: PChar): string;begin
ShowMessage(p);
StrCopy(P, 's');
Result := '0';
end;procedure TFormICcard.Button2Click(Sender: TObject);
var
pp: PChar;
begin
GetMem(PP, 20);
// pp:='02';
StrCopy(PP, '02');
test(pp);
ShowMessage(pp);
end;