Hier mal dein C++ Code in Delphi gefasst
Delphi-Quellcode:
program dp_181230;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
type
CKlasse =
class
public
function anzahl : Integer;
end;
{ CKlasse }
function CKlasse.anzahl : Integer;
begin
Result := 42;
end;
procedure Foo;
var
aktuelleanzahl : Integer;
// eine einfache Variable
Klassenvariable : CKlasse;
// eine Klassen-Referenz-Variable
zahl : PInteger;
// Ein Zeiger auf einen Integer
begin
// int aktuelleanzahl = 0;
aktuelleanzahl := 0;
// CKlasse *Klassenvariable = NULL;
Klassenvariable :=
nil;
// Klassenvariable = new CKlasse
Klassenvariable := CKlasse.Create;
// aktuelleanzahl = Klassenvariable.anzahl();
aktuelleanzahl := Klassenvariable.anzahl( );
// delete aktuelleanzahl;
// DELPHI: Variablen kann man überschreiben, aber der Speicher sollte nicht freigebeben werden
Klassenvariable.Free;
// In Delphi notwendig, sonst Speicherleck
// int *zahl = Null;
zahl :=
nil;
// zahl = new int;
new( zahl );
// *zahl = 100;
zahl^ := 100;
// delete zahl;
FreeMem( zahl );
end;
begin
ReportMemoryLeaksOnShutdown := True;
try
Foo;
except
on E :
Exception do
Writeln( E.ClassName, '
: ', E.
Message );
end;
end.
In Delphi erfolgt die Dereferenzierung bei Klassen-Referenz-Variablen
automatisch, daher ist dort keine explizite Behandlung notwendig.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)