如何使用可变参数打印出多个字符串?我试过这个,但我不能确定数组的大小。它只是打印垃圾。如何使用可变参数打印字符串?
program Project1;
{$APPTYPE CONSOLE}
{$POINTERMATH ON}
function _Print(const S: String): string; cdecl;
var
Args: Array[0..100] of Pointer absolute S;
I: Integer;
begin
I := 0;
while Args[I] <> nil do
begin
WriteLn(PString(@Args[I])^);
Inc(I);
end;
end;
const Print: function(const S: String): string; cdecl varargs = _Print;
var
A, B: String;
begin
A := 'ABC';
B := 'CDE';
Print(a, b, 'asdasd', 'fasd', ' ')
end.
为什么你需要做的这一切? Delphi支持数组,并且具有允许您在数组中获得'Length','Low'索引和'High'索引值的函数。你可以简单地将数组传递给你的函数并遍历它,而不用试图跳过所有这些箍。你的函数声明就变成了'procedure Print(Values:string of array);'。 –
这不是*更快*。你从哪里得到这个荒谬的想法? *我更喜欢指针*是无稽之谈。对于你在这里试图做的事情,没有速度的提高,这是一个不必要的复杂程度。 (即使您删除了您在我发布此回复后立即回复的评论,但我仍然留下该评论。为了其他人的利益,它说*因为它更快,我更喜欢ponters *)。 –