Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#12

Re: Double-Pointer als Int-Parameter übergeben und zurück

  Alt 25. Feb 2010, 09:49
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).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat