http://www.delphibbs.com/delphibbs/DispQ.asp?LID=3685176
2007-4-6 19:25:51 如要返回字符串要用PChar,最好用PChar用out或var方式返回,PChar的内存分配和释放在调用函数处理:GetMem(p, Size); FreeMem(p);
而在被调用函数写的方式应该是:
procedure GetStr(var Pstr: PChar); var str: string begin str := 'return string'; strCopy(PStr, PChar(str)); end;
调用函数写法: TGetStr= procedure(var Pstr: PChar);
funtion GetDllStr: string var DllHnd: THandle; GetStr: TGetStr; Str: PChar; strPath: string; begin AHaveWhere := 0; DllHnd := LoadLibrary(PChar('testdll')); try if (DllHnd <> 0) then begin @GetStr :=GetProcAddress(DllHnd, 'GetStr'); if (@GetStr<>nil) then begin GetMem(Str, 1024); try GetStr(Filter); result := StrPas(Filter); finally FreeMem(Str); end; end else begin application.MessageBox(PChar('DLL加载出错,DLL可能不存在!'), PChar('错误'), MB_ICONWARNING or MB_OK); end; end; finally FreeLibrary(DllHnd); end;
|
请发表评论