Pascal 具有无限参数的函数

Pascal 具有无限参数的函数,pascal,Pascal,我不知道是否有可能按照我的意愿去做 我在Pascal中有一个函数,它以某种独占格式在屏幕上打印文本 procedure printLine(line1:string;line2:string;line3:string;line4:string;line5:string); begin writeln('**** ',line1,' ',line2,' ',line3,' ',line4,' ',line5); end; 我想知道是否有一种方法可以使它看起来像writeln,并用

我不知道是否有可能按照我的意愿去做

我在Pascal中有一个函数,它以某种独占格式在屏幕上打印文本

    procedure printLine(line1:string;line2:string;line3:string;line4:string;line5:string);
begin
    writeln('**** ',line1,' ',line2,' ',line3,' ',line4,' ',line5);
end;

我想知道是否有一种方法可以使它看起来像writeln,并用我需要的参数数调用它。

我正在努力回答这个问题。我不会在我的程序中使用它,但我会发布我制作的东西

procedure printLine(const Args: array of const);
var
    i:integer;
begin
write('**** '); 
for i:=0 to High(Args) do
        write(args[i],' ');
    writeln;
end;
这是使用Delphi的const数组以防有人需要它的代码我没有测试它。此解决方案是根据LU RD的评论制定的

关于MartynA的评论: 我基于字符串的dinamic队列快速定义了一个单元。我检查了它并执行了新的程序printLine。 使用此队列执行的过程是:

procedure printLine(Args:tQueue);
var
begin
    write('**** ');
    while (not(isEmptyQueue(Args))) do begin
        write(front(Args));
        dequeue(Args);
    writeln;
end;
我意识到我提出的问题很容易解决,但我 问这个的时候有点累。
谢谢大家。

我正在努力回答这个问题。我不会在我的程序中使用它,但我会发布我制作的东西

procedure printLine(const Args: array of const);
var
    i:integer;
begin
write('**** '); 
for i:=0 to High(Args) do
        write(args[i],' ');
    writeln;
end;
这是使用Delphi的const数组以防有人需要它的代码我没有测试它。此解决方案是根据LU RD的评论制定的

关于MartynA的评论: 我基于字符串的dinamic队列快速定义了一个单元。我检查了它并执行了新的程序printLine。 使用此队列执行的过程是:

procedure printLine(Args:tQueue);
var
begin
    write('**** ');
    while (not(isEmptyQueue(Args))) do begin
        write(front(Args));
        dequeue(Args);
    writeln;
end;
我意识到我提出的问题很容易解决,但我 问这个的时候有点累。
感谢大家。

最简单的方法可能是对
打印行进行编码,以接受文本行的链接列表;这样,列表可以包含任意数量的行。它并不适用于每一个帕斯卡人。@RudyVelthuis,是的,Delphi和Freepascal。Allen评论了背景历史:。是的,Turbo Vision(TP)formatstr()函数很糟糕,delphi object pascal版本要好得多。可能最简单的方法是对
打印行进行编码,以接受文本行的链接列表;这样,列表可以包含任意数量的行。它并不适用于每一个帕斯卡人。@RudyVelthuis,是的,Delphi和Freepascal。Allen评论了背景历史:。是的,Turbo Vision(TP)formatstr()函数很糟糕,delphi object pascal版本更好。您必须将
Args
元素转换为字符串,例如,使用此答案中的
VarRecToString
。或使用
RTTI
单元,将
TVarRec
元素转换为
TValue
以转换为字符串:
TValue。FromVarRec(args[i])。ToString
Write可以打印非字符串的元素,如整数。至少,我以为是这样的。我说我没有测试过,如果有人测试了它,但不起作用,请报告,我会更改它。感谢LU RD的关注。建议的更改适用于大多数类型。对于通过
Write
打印,类型必须在编译时已知,因此需要显式转换为字符串。您必须将
Args
元素转换为字符串,例如,使用此答案中的
VarRecToString
。或使用
RTTI
单元,将
TVarRec
元素转换为
TValue
以转换为字符串:
TValue。FromVarRec(args[i])。ToString
Write可以打印非字符串的元素,如整数。至少,我以为是这样的。我说我没有测试过,如果有人测试了它,但不起作用,请报告,我会更改它。感谢LU RD的关注。建议的更改适用于大多数类型。对于通过
Write
打印,类型必须在编译时已知,因此需要显式转换为字符串。