如何使用可變參數打印出多個字符串?我試過這個,但我不能確定數組的大小。它只是打印垃圾。如何使用可變參數打印字符串?
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 *)。 –