我在调用DLL的函数
function  GetPersonInfo(Flag,MedKind:integer;SysDate:Pchar; out AppCode:integer; DataBuffer:Pchar):integer;stdcall;far;external 'DBLib.DLL' name 'GetPersonInfo';
的时候,把DataBuffer定义成Pchar类型的,在返回的时候总是提示'非法的指针操作'是不是我定义的指针不对还是怎么回事呀,高手门,快帮帮我吧,谢谢大家了!

解决方案 »

  1.   

    就这样看不出问题的
    PChar调用前,必须先使用AllocMem分配空间http://lysoft.7u7.net
      

  2.   

    对,用AllocMem或者GetMem都可以,要分配指针的空间
      

  3.   

    不知道你的DataBuffer需要有多少大,对于PChar需要自己开内存的我一般是这样处理的,如
    DWORD GetModuleFileName(    HMODULE hModule, // handle to module to find filename for 
        LPTSTR lpFilename, // pointer to buffer for module path 
        DWORD nSize  // size of buffer, in characters 
       );
    我是这样调用的var
      FileName: array[0,,1023] of char;
    begin
      GetModuleFileName(HInstance, FileName, SizeOf(FileName));
    end;