Forum: Programmieren allgemein
by himitsu,
25. Feb 2010
Dann sollte es auch funktionieren.
Es sei denn du hast irgendwo noch einen Bufferoverrun.
Oder es liegt wirklich nur an einem Rundungs-/Anzeigefehler, wo oftmals kleinere Abweichungen normal sind.
Forum: Programmieren allgemein
by himitsu,
25. Feb 2010
Jupp, glatt vergessen, aber im Prinzip müßte es so jetzt funktionieren. :gruebel:
Schau mal, ob Gewichtsparameter nach dem Empfangen den selben Wert hat, wie Integer(pGewicht) vor dem Versenden.
Forum: Programmieren allgemein
by himitsu,
25. Feb 2010
Ja, das ist was ganz Anderes.
Hier wird zwar eine Funktion aufgerufen, aber dann Zeitversetzt in einer anderen Funktion weitergearbeitet.
So würde ja der Speicher, auf welchen der Pointer zeigt schon freigegeben, bevor die andere Prozedur diesen auslesen kann.
Also hier wird dann natürlich ein Zwischenspeicher benötigt.
procedure ProcedureA(Gewicht : double)
var
Forum: Programmieren allgemein
by himitsu,
25. Feb 2010
Was jetzt noch sein kann, ist ein Rundungsfehler
procedure ProcedureB(intWert: integer);
var
Gewicht: double;
begin
Gewicht := PDouble(intWert)^;
ShowMessage(FloatToStr(Gewicht));
end;
Forum: Programmieren allgemein
by himitsu,
25. Feb 2010
@Blup: Da stand wirklich pGewicht.
Forum: Programmieren allgemein
by himitsu,
24. Feb 2010
procedure ProcedureA(Gewicht : double);
var
A_pGewicht : PInteger;
begin
A_pGewicht := nil,
New(A_pGewicht);
A_pGewicht := @Gewicht;
ProcedurB(A_pGewicht^);
end;