library Getvalues;
uses
  SysUtils,
  Classes,
  DbProc in 'DbProc.pas';
{$R *.res}
  Exports
     GetWrtieValues,
begin
end.unit DbProc;interface
 uses
 Windows,SysUtils,Classes,DB,ADODB,ActiveX,Variants;
    Function GetWrtieValues(LineCode, ModelCode,OperatorCode: Pchar):Pchar;Stdcall;implementation
Function GetWrtieValues(LineCode, ModelCode,OperatorCode: Pchar):PChar;
Begin        Result:=LineCode+ModelCode+OperatorCode;
End;
end.如上DLL代码Result只能返回一个值,假设我想要同时返回LineCode+ModelCode,和LineCode+OperatorCode两个值,代码应该怎么写。跪求~~~~

解决方案 »

  1.   

     Function GetWrtieValues(LineCode, ModelCode,OperatorCode: Pchar):Pchar;Stdcall;改为
     Function GetWrtieValues(LineCode, ModelCode,OperatorCode,result1,result2: Pchar):Pchar;Stdcall;函数体里加
    result1 := LineCode+ModelCode;
    result2 := LineCode+OperatorCode;
      

  2.   

    那Exports里的GetWrtieValues本身Result返回只是一个PChar类型,现在返回的Result1,Result2可以被使用吗?
      

  3.   

    2楼,不对呀,如果再定义Result1,Result2,这样调用这个参数的时候原本要传3个值,现在就要传5个了,否则不匹配就要报错的,我苦恼的是怎么在原来传3个值得时候,根据运算结果返回2个值。
      

  4.   

    type
     TMyVal = Array [1..2] of Pchar;Function GetWrtieValues(LineCode, ModelCode,OperatorCode: Pchar):TMyVal;stdcall; export;
    begin
       Result[1] := ...;
       Result[2] := ...;
    end;
      

  5.   


    Function GetWrtieValues(LineCode, ModelCode, OperatorCode: Pchar): TMyVal;
      stdcall; export;
    var
      aArr: TMyVal;
      aPointer: ^TMyVal;
    begin
      aArr[1] := ...;
      aArr[2] := ...;
      aPointer := @aArr;
      Result := aPointer^;
    end;
      

  6.   

    {调用:}
    var
      P1,P2:Pchar;
    P1 :=GetWrtieValues(...)[1];{第一个值}
    P2 :=GetWrtieValues(...)[2];{第二个值}
    {当然,LineCode+ModelCode和LineCode+OperatorCode运算过程是自己需要解决的问题}
      

  7.   

    Function GetWrtieValues(LineCode, ModelCode,OperatorCode,result1,result2: Pchar):Pchar;Stdcall;