我在DLL中写了一个Procedure但是不知道如何返回一个字符串参数??
请高手们帮帮忙!
小弟先谢谢了!!!

解决方案 »

  1.   

    procedure x(var str:string)
    begin
       ...
    end;
    试试看。
      

  2.   

    这样不行!
    这样:
    procedure x(var str:pchar)
    begin
       str:='Test';
    end;
    也不行!
      

  3.   

    用PAnsiChar代替string,如下所示:
    dll中:function GetEnStr(const ACnStr: string): PAnsiChar; stdcall
    exe中:leEnName.Text := StrPas(GetEnStr(leCnName.Text));
      

  4.   

    我想用
    procedure x(var str:pchar);
    可以返回参数吗??
      

  5.   

    我想搂主说的返回参数应该是返回值吧!你用过程procedure x(var str:pchar)是没有返回值得!你如果要用到返回值的话就应该定义成:function x(参数列表):PAnsiChar;stdcall 要用的话你就看赋值给谁了!怎么定义你应该知道得吧!
      

  6.   

    不是的:
    这样你会明白点:
    procedure x(var s1,s2:pchar)
    begin
       s1:='Test1';
       s2:='Test2';
    end;
    想返回两个值!
      

  7.   

    可以啊:
    dll:
    ...
      procedure x(var s1,s2: PAnsiChar); stdcall
      begin
        s1 := PAnsiChar('Test1');
        s2 := PAnsiChar('Test2');
      end;  exports
        x;
    ...
    exe:
    ...
    procedure x(var s1, s2: PAnsiChar); stdcall; external 's.dll';{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      s1, s2: PAnsiChar;
    begin
      x(s1, s2);
      ShowMessage(StrPas(s1) + ' ' + StrPas(s2));
    end;
    ...