Registriert seit: 23. Jan 2008
3.685 Beiträge
Delphi 2007 Enterprise
|
AW: Verwenden von Pointern
28. Dez 2012, 17:11
Eigentlich funktioniert das genau wie mit einer Integer- oder String-Variable.
Eigentlich genau nicht, da nach so etwas hier dann verschiedene Werte in den Variablen stecken:
Delphi-Quellcode:
var
str1, str2: String;
int1, int2: Integer;
obj1, obj2: TMyClass;
begin
str1 := 'hallo';
str2 := str1;
str1 := 'bye';
// hiernach ist str1 = 'bye' und str2 = 'hallo'
int1 := 1;
int2 := int1;
int1 := 2;
// hiernach ist int1 = 2 und int2 = 1
obj1 := TMyClass.Create;
obj1.SomeProperty := 1;
obj2 := obj1;
obj1.SomeProperty := 2;
// hier hingegen sind obj1.SomeProperty und obj2.SomeProperty = 2
end;
Edit: Der Vollständigkeit halbar das ganze noch mit einem Record:
Delphi-Quellcode:
var
rec1, rec2: TMyRec;
begin
rec1.SomeValue := 1;
rec2 := rec1;
// bis hier hin sind rec1 und rec2 IDENTISCH, nicht nur gleich. Beide Variablen greifen auf den SELBEN Speicher zu
rec2.SomeValue := 2;
// Und hier greift dann compiler magic (copy-on-write genannt): Es wurde im Hintergrund eine Kopie angelegt. Nunmehr zeigt nur noch rec1 auf den anfänglichen Speicher, rec2 hat automatisch eine völlig eigene Instanz erhalten.
end;
Mit Strings läuft das übrigens eigentlich genau so ab.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
Geändert von Medium (28. Dez 2012 um 17:16 Uhr)
|