Wie kann eine Funktion mit 'varargs' den Inhalt des Stapels abrufen?

Normalerweise deklariert man in Delphi eine Funktion mit einer variablen Anzahl von Argumenten mit der Methode 'array of const'. Aus Gründen der Kompatibilität mit in C geschriebenem Code gibt es jedoch eine weithin unbekannte 'varargs'-Direktive, die zu einer Funktionsdeklaration hinzugefügt werden kann (das habe ich beim Lesen von Rudys exzellentem' @ gelernPitfalls der Konvergenz 'document).

Als Beispiel könnte man eine Funktion in C haben, die wie folgt deklariert ist:

void printf(const char *fmt, ...)

In Delphi würde dies zu:

procedure printf(const fmt: PChar); varargs;

Meine Frage ist: Wie komme ich zum Inhalt des Stacks, wenn ich eine Methode implementiere, die mit der 'varargs'-Direktive definiert ist?

Ich würde erwarten, dass einige Tools dafür vorhanden sind, wie Dephi-Übersetzungen der Funktionen va_start (), va_arg () und va_end (), aber ich kann dies nirgendwo finden.

Bitte hilfe!

PS: Bitte lassen Sie sich nicht von Diskussionen über das Warum oder das Array der Konstanten abbringen. Ich benötige diese, um C-ähnliche Patches für Funktionen in Xbox-Spielen zu schreiben (siehe das Delphi Xbox-Emulator-Projekt 'Dxbx' auf sourceforge für Details).

Antworten auf die Frage(6)

Ihre Antwort auf die Frage