2016-01-23 2 views

Répondre

2

Si vous souhaitez utiliser votre fonction avec n'importe quel nombre/type d'argument de manière Write, comme smth(3, 'aaa', 5.6) - il est impossible que je sache. Cependant vous pouvez utiliser le type array of ... pour l'argument de passer à la procédure n'importe quel nombre d'arguments.

Voici un exemple:

program wrt; 

{$mode objfpc}{$H+} 

uses 
    sysutils, variants; 

procedure test1(args: array of Variant); 
var 
    i: Integer; 
begin 
    for i := Low(args) to High(args) do 
     Write(args[i]); 
    Writeln; 
end; 

procedure test2(fmt: string; args: array of const); 
begin 
    Writeln(Format(fmt, args)); 
end; 

begin 
    test1([1, 'aaa', 3.5, False]); 
    test2('%d %s %g, %s', [1, 'aaa', 3.5, BoolToStr(False, True)]); 
end. 
0

Par exemple:

procedure write(text : string); 
begin 
    write(text); 
end; 

Mais si vous voulez override votre fonction. Vous devez lire ce sujet HERE. Cela vous permettra de faire fonctionner avec plus de type d'arguments.