Du musst Dir darüber im Klaren werden, was die Nutzdaten sind und was die Zeiger darauf. Die aufrufende Routine reserviert den zu befüllenden Speicher und gibt dessen Zeiger sowie die größe des reservierten Speichers an die Funktion weiter. Diese schreibt ihre Daten dann an diese Adresse. Stell Dir das so vor, als würde ich bei Dir 4 Kisten Bier bestellen und Dir zum Verladen meinen Autoschlüssel geben.
Delphi-Quellcode:
procedure VerladeBier(Ziel: PKofferraum; Anzahl: integer);
begin
VerladeKisten(Ziel^, Anzahl);
end;
Ziel ist also mein Kofferraumschlüssel und Anzahl die Menge der zu verladenden Kisten. Dabei habe ich als Auftraggeber dafür zu sorgen, dass die bestellte Menge auch tatsächlich in den Kofferraum, zu dem der übergebene Schlüssel gehört, hineinpasst.