Was jetzt noch sein kann, ist ein Rundungsfehler
Delphi-Quellcode:
procedure ProcedureB(intWert: integer);
var
Gewicht: double;
begin
Gewicht := PDouble(intWert)^;
ShowMessage(FloatToStr(Gewicht));
end;
procedure ProcedureA(Gewicht : double);
begin
ShowMessage(FloatToStr(Gewicht));
ProcedureB(Integer(@Gewicht))
end;
Die beiden Messageboxen sollten das Selbe anzeigen.
Speicher reservieren, über New oder Dergleichen, brauchst du eigentlich nur, wenn der Speicherplatz, wo diese Variable liegt, eventuell nicht mehr existieren könnte, wenn der Zeiger dereferenziert wird.
Hier ist es aber so, daß die ursprüngliche Variable (der Parameter "Gewicht") erst nach dem Aufruf von ProcedureB freigegeben wird und somit innerhalb der ProcedureB immer zur Verfügung stehen wird, darum reicht uch ein einfacher Zeiger (egal ob direkt oder z.B. als konvertierter Integer übergeben).