如何将C语言的指针转换为DELPHI的字符串(100分)

  • 主题发起人 AsleepAnge
  • 开始时间
A

AsleepAnge

Unregistered / Unconfirmed
GUEST, unregistred user!
我调用C语言写的标准动态库,函数原形是long GetAllState(char *pAllDevState)。
char *pAllDevState应该就是指输出的指针吧?
我的声明是这样的,function GetAllState(pAllDevState: PChar): Integer;
stdcl;
external 'xxx.dll' index 5;
调用是这样的:
var
a: PChar;
GetAllState(a);
Edit1.text:=StrPas(a);
但是却报错说非法的地址。。。access violation at address 00404113 in module 'asd.exe'.read of address 30303030.
怎么能把这个指针转换为DELPHI的字符串呢。。。
 
X

xianguo

Unregistered / Unconfirmed
GUEST, unregistred user!
var
a: PChar;
begin
a := StrAlloc(512);
//!!!分配内存
GetAllState(a);
Edit1.text:=StrPas(a);
end;
 
A

AsleepAnge

Unregistered / Unconfirmed
GUEST, unregistred user!
TO: XOAMGUO
我用StrAlloc或者GetMem都试过现分配地址,但仍然还是同样的错误:
access violation at address 00404113 in module 'asd.exe'.read of address 30303030.
 
X

[xiaopei]

Unregistered / Unconfirmed
GUEST, unregistred user!
var a:array[0..255] of char;
begin
GetAllState(a);
Edit1.text:=StrPas(a);

end;
 
H

hfghfghfg

Unregistered / Unconfirmed
GUEST, unregistred user!
GetAllState(var pAllDevState: PChar):
??
 
H

hfghfghfg

Unregistered / Unconfirmed
GUEST, unregistred user!
var
a: PChar;
len: integer;
s: string;
begin
a := AllocMem(512);
len := GetAllState(a);
if len > 0 then
begin
setlength(s, len);
move(a[0], s[1], len);
ShowMessage(s);
end;

?//
 

Similar threads

S
回复
0
查看
942
SUNSTONE的Delphi笔记
S
S
回复
0
查看
762
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部