本帖最后由 wangfei1812 于 2012-10-12 12:30:01 编辑

解决方案 »

  1.   

    function redryxx():TMyVal;stdcall;
    改成
    procedure redryxx(var Result : TMyVal);stdcall;
    调用处相应修改
      

  2.   

    看似没问题啊,是不是未返回结果之前的数据就是错误的调用不变; 把dll改一下做个简单的测试:
    type
     TMyVal = Array [1..2] of Pchar;function redryxx():TMyVal;stdcall;
    var
      aArr: TMyVal;
      aPointer: ^TMyVal;
    begin
      aArr[1] :='A';
      aArr[2] :='B';
      aPointer := @aArr;
      Result := aPointer^;
    end;可以不用指针aPointer,直接Result:=aArr;
      

  3.   

    aArr[1] :=pchar(ls_rtn);
    aArr[2] :=pchar(ls_tjbh);改用StrCopy试试
      

  4.   

    谢谢两位。,就是字符转换出了问题。。只能用STRING 才能正常。StrCopy 用这个不成,,,
      

  5.   

    aArr[1] :=pchar(ls_rtn);
    aArr[2] :=pchar(ls_tjbh);改用StrCopy试试  这个函数怎么用,。直接替换不成我改成这样
    TMyVal = Array [1..2] of string;ls_rtn,ls_tjbh:stringaArr[1] :=ls_rtn;
    aArr[2] :=ls_tjbh;传输过去倒是可以就是aArr[1]在字符后边带个?号。,NND 有啥好办法不!
      

  6.   

    数组好像不能直接通过dll传递的吧。。要么你就取地址