int MenuApp(char *In, char *Out); In输入参数  Out函数返回数据
在delphi中如何声明呢?   

解决方案 »

  1.   

    function MenuApp(strIn: PChar; var strOut: PChar): integer; stdcall;external 'xxx.dll';
      

  2.   

    谢谢 lynmison 。但是如何调用呢?
    我这样
    var ss1,ss2:pchar ;
    begin
     ss2:=stralloc(1024);
     ss1:=1111111111111111111';
     MenuApp(pchar(ss1),pchar(ss2)) 会提示
    access violation at address 7C921010 in moudle 'ntdll.dll' 错误。这是怎么回事呢。
      

  3.   

    入口参数用字符串数组试试看
    var
      ss1: array[0..1023] of char;
      ss2: pchar;
    begin
      ss1:='1111111111111111111';
      ss2:=stralloc(1024);
      MenuApp(pchar(ss1),pchar(ss2));
      ...
      StrDispose(ss2);
      ...
      

  4.   

    var 
        ss1:   array[0..1023]   of   char;
        ss2:   pchar;
    begin
        ss1:='1111111111111111111';
        ss2:=stralloc(1024);
        MenuApp(ss1,pchar(ss2));
       // ...
        StrDispose(ss2);
       // ...还是提示 access   violation   at   address   7C921010   in   moudle   'ntdll.dll'   错误 。怎么回事呢?
    MenuApp应该没有问题。示例程序vc++的例子,是可以调用的。并能弹出窗口。
      

  5.   

    MenuApp 完整的定义是什么?有没有可能跟调用方式有关?stdcall/cdecl?
      

  6.   

    这个问题我来解决:首先声明成这样
    function   MenuApp(strIn: PChar; strOut: Pchar):   integer;   stdcall;external   'xxx.dll';
    然后调用
    var   
    ss1:pchar   ;
    ss2:string;
    begin
      ss1:='1111111111111111111';
      setlength(ss2,1024);
      MenuApp(ss1,pchar(ss2));
      ss2 := strpas(ss2);
      showmessage(ss2);
      //...................
      setlength(ss2,0);
    end;
      

  7.   

    定义:
      function MenuApp(strIn: string; strOut: PChar): integer; stdcall; external 'trans.DLL';procedure TForm1.Button1Click(Sender: TObject);
    var
      strIn: array[0..45] of char;
      strOut: array[0..41] of char;
    begin
      strIn := '050000000010001234            02028   0109    ';
      if MenuApp(strIn,strOut)=1 then ShowMessage('ok')
      else ShowMessage('device not ready');
    end;
      

  8.   

    请使用  cdecl 声明
      

  9.   

    function MenuApp(In : Pchar;Out : PChar) : Integer;cdecl;