一般在调用Dll中的函数时应该传递指针,因为直接传递地址可以直接操作改变数据
如
type
PMyRecord=^TMyRecord;
TMyRecord=record
FHandle:THandle;
FName
char;
end;
传递时可以用PMyRecord类型
function GetFileName(MyRecord
MyRecord):integer;stdcall;
var
s:string;
AHandle:THandle;
begin
result:=1;
AHandle:=MyRecord^.FHandle;
s:=StrPas(MyRecord^.FName);
MyRecord^.FName:='Ok';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
MyRecord:TMyRecord;
begin
MyRecord.FHandle:=100;
MyRecord.FName:=pchar('welcome');
GetFileName(@MyRecord);
end;
在Dll中最好用pchar类型,如果用string类型则必须将sharemem引用在Dll中的uses的第一个单元
当你创建一个Dll时Delphi中的注释的意思就是这样
实际上pchar只是一个指针,所以你必须使用之前分配内存如
var
pstr
char;
begin
GetMem(pstr,100);
try
//using pstr here
finally
FreeMem(pstr,100);
end;
end;
有几本好书建议你看一看
《Delphi5开发人员指南》,《Delphi4核心编程技术》