Der Dereferenzierungsoperator in Delphi ist "^". D.h.:
Delphi-Quellcode:
var
EinByte: Byte;
EinPByte: PByte;
begin
EineProzedur(EinPByte);
EinByte := EinPByte^;
end;
Danach steht in EinByte der Wert auf den EinPByte zeigt.
Ich glaube nicht, dass es hier in diesem Beispiel mehrere Bytes sein können. Zwar werden Arrays in C gern als lose Pointer realisiert, aber um solche zu sein müssten irgendwo noch Längenangaben sein, die ich hier nicht sehe. (Bei PChar ist's etwas anders, da dort in der Regel #0 als Terminator agiert, und man daher auch ohne Längenangaben auskommt.)
Edit: Ich seh grad, das sind ja garkeine var-Parameter. In dem Fall:
Delphi-Quellcode:
var
Major, Minor, Revision, Release: Byte;
Foo: DWORD;
begin
Major := 1;
Minor := 2;
Revision := 3
Release := 4; // Beispielwerte halt :)
Foo := GetDllVersion(@Major, @Minor, @Revision, @Release);
end;
"@" ist also das Gegenstück zu "^", dass einen Pointer auf die folgende Variable liefert.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)