1、在delphi里如何实现给函数/过程传递任意多参数问题
   例如:
     type
       TMyRec = record 
         id: integer;
         value: real;
       end;
       
   如何定义一个函数实现从任意多个TMyRec记录里得到最大记录ID,VALUE
   var
     r1,r2,r3,r4,r5,MaxRec: TMyRec;
   begin
     ...
     MaxRec := GetMaxRec(r1,r2,r3);
     MaxRec := GetMaxRec(r1,r2,r3,r4);
     MaxRec := GetMaxRec(GetMaxRec(r1,r2,r3,r4),r5);
     ...
   end;2、如何给函数/过程传递类型参数,控件名,动态生成控件
   例如:   ...
   GenNewCtrl(self, TButton, button1);
   GenNewCtrl(self, TButton, button1,button2);
   GenNewCtrl(self, TEdit, Edit1,Edit2);
   ...3、类型名与字符串名有和实质区别
   例如有一BUTTON名字为button1,我们可以使用button1.click完成其单击功能,而如果传递给函数或过程一字符串名"button1",我们只有遍历窗体才能查找到该控件然后访问。却不能直接使用传递的参数,例如:
   ExeClick(Button1);
   或者
   ExeClick('Button1');
   这样的函数或过程定义如何实现?

解决方案 »

  1.   

    哈哈,FAO什么东西,有什么用
      

  2.   

    C语言的 printf 最典型的....不过也因为如此 存在一些安全漏洞
      

  3.   

    Delphi不支持这个特性,不过你可以用开放数组啊
      

  4.   

    考试玩啊?
    1,function GetMaxRec(Recs: array of TMyRec): TMyRec;
      调用时要这么写:
      MaxRec := GetMaxRec(r1,r2,r3,r4);2,procedure GenNewCtrl(Owner: TCompontent; CtlType: TCompontentClass; 
         var Ctls: array of TCompontent); 
      GenNewCtrl(self, TButton, [button1]);3, 可以通过窗口的FindComponent来作最后你提到的参数类型不一致的话,一个是可以用Variant类型,另一种是这样:
    使用array of Const
    function MakeStr(const Args: array of const): string;
    begin
      for I := 0 to High(Args) do
        with Args[I] do
          case VType of
            vtInteger:    Result := Result + IntToStr(VInteger);
            vtVariant:    Result := Result + string(VVariant^);
            vtInt64:      Result := Result + IntToStr(VInt64^);
            ...
          end;
      end;
    end;
    帮助里有解释和例子,不过这样是不能通过参数返回值的。
      

  5.   

    上面忘了加括号了,第一个调用应该是这样:
    MaxRec := GetMaxRec([r1,r2,r3,r4]);
      

  6.   

    还是错了一点,第二个问题,不能用Var类型,这样的话就必须传入一个数组,很不爽,可以改成这样:
      procedure GenNewCtrl(Owner: TCompontent; CtlType: TCompontentClass; 
        Ctls: array of Pointer); 
      GenNewCtrl(self, TButton, [@button1]);
      

  7.   

    呵呵,多少有点帮助。另外,DELPHI里可以嵌入汇编语言,能否使用某种代码,使DELPHI可以嵌入一些如PL/SQL、C、等等语言,哈哈,说到这里可能我头都大了,不过希望大家多交流交流哈!