Da es ja ein untypisierter VAR-Parameter ist, breucht man nur den Typ casten und muß nicht über den Pointer gehen ... VAR-Paramater sind ja bereit dereferenzierte Parameter.
Das
integer(pinteger(z1)) war zwar nicht ganz falsch, denn wenn man es auflöst, dann kommt man zu
integer(z1) ... genauso wie wenn man
pinteger(@z1)^ verwenden würde.
Es ist also genauso, als wenn es typisierte VAR-Parameter wären
z.B.:
Delphi-Quellcode:
function rechne(var z1, z2: Cardinal): integer;
begin
result := integer(z1) + integer(z2);
end;
PS: wenn es sich wirklich um einen echten (nicht dereferenzierten) Pointer handeln täte, dann würde es so
pinteger(z1)^ aussehnen, oder wenn es unbedingt sein muß auch so
integer(pinteger(z1)^).