其中要返回的一个结果的类型是boolean,另一个返回结果的类型是字符串,那个函数
应该怎样写才会返回两个不同类型的结果

解决方案 »

  1.   

    overload静态方法静态方法和函数差不多~~
      

  2.   

    function Test(argv:integer;var OtherResult:string):boolean;
    begin
       Result:=false;//这里传回boolean结果
       if (argv%2=1) then
       begin
          OtherResult:='奇数';//另一string结果用VAR 传回
          Result:=True;
       end;
       else
          OtherResult:='偶数';
    end;
    //主程序的调用例子
    var 
       s:string;
    begin
       Test(3,s);
       showMessage(s);
    end;
      

  3.   

    用记录嘛
    type 
    RRec = record
    RBool : boolean;
    RStr : integer;
    Endfuction Test(Paralist):RRec;
      

  4.   

    Re = record
      case Integer of
      1:R1:Boolean;
      2:r2:string;
    end;还可以这样,Result:=Boolean(Integer(Pointer('hahaha'))))嘿嘿!
      

  5.   

    用fermium的方法好像不行啊 ?! 是不是。。
      

  6.   

    function A:boolean; overload;
    function A:string; overload;
      

  7.   

    有两个方法:
    1。定义一个结构。函数返回结构(或结构的指针)。
    2。定义一个过程。参数用var修饰!(实际上还是指针)
      

  8.   

    书上说重载作用在形参不同而同名的函数(实际是两个函数) .其中要返回的一个结果的类型是boolean,另一个返回结果的类型是字符串
    ---- Function FName(var s : String ; var b : Boolean) : Integer/ot ;可以的 
      

  9.   

    谢谢GreensPan(GreensPan) ,我的是不对的,写错了。
    function A(V:boolean):boolean; overload;
    function A(V:string):string; overload;
      

  10.   

    function A(V:boolean):boolean; overload;
    overload有什么用,可否解析一下
      

  11.   

    很简单,利用多态性就可以,用指示字:overload,eg:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
      private
        { Private declarations }
        function GetResult(Value:Boolean):Boolean;overload;
        function GetResult(Value:String):String;overload;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ TForm1 }function TForm1.GetResult(Value: Boolean): Boolean;
    begin
      Result:=not Value;
    end;function TForm1.GetResult(Value: String): String;
    begin
      Result:=Value+Value;
    end;end.
      

  12.   

    可以返回一个 Pointer 的地址.function Afun:pointer;返回结果的不同类型可以这么取: PString(Afun);
                                  PRect(Afun);
                                  PInteger(Afun);等等
    但函数的返回值所指的地址一定要和所要求类型的地址格式相同.不要返回一个String型,用 PRect(Afun)取值.函数中可以用 PString(Result) := '值';   
                 PRect(Result).Top := 123; 
                 PRect(Result).Left := 123;等等很灵活的.
      

  13.   

    呵呵  我有办法
    Function  mengxiabao(ID:Integer ;StringItem:TStringList):age integer;
    在程序外创建StringItem  
    在函数内给StringItem赋值
    在调用函数外用StringItem 的值
    这个算不算返回两种类型啊!!!!!!!!!!!!!!!!!!!!!!!
      

  14.   

    自己定义一个结构
    type test = reocrd
         b : Boolean ;
         s : String;
         end;
    fuction atest :test ;
    begin
        Atest.b := true ;
        Atest.s :=‘Just a test’;
    end ;
      

  15.   

    如果这个问题是要同时返回2个参数,用我的方法就可以;
    如果是要根据不同的参数返回不同类型的结果,当然就只好重载。
    用记录的情况全部的代码是:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      RRec = record
      r1:integer;
      r2:boolean;
      end;
      TForm1 = class(TForm)
        Label1: TLabel;
        Label2: TLabel;
        procedure FormCreate(Sender: TObject);
      private
        function F1():RRec;
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      rec:RRec;implementation{$R *.dfm}function TForm1.F1: RRec;
    begin
    result.r1 :=10;
    result.r2 :=false;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    rec:=f1();
    label1.Caption := inttostr(rec.r1);
    label2.Caption := booltostr(rec.r2);
    end;end.
    不好意思本来想在label1的click里写的,竟然点错了555555。