Hallo zusammen!
Ich übergebe dem "Create" einer Klasse eine Variable per VAR-Parameter,
um innerhalb der Klasse deren Wert zu setzen.
Beim VAR-Parameter wird doch nur der Pointer übergeben, richtig?
Um mir diese Pointer-Adresse zu merken, speichere ich sie
in einer internen Adresse der Klasse, also so:
Delphi-Quellcode:
Type
TTest = class
private
fPHasChanged: ^Boolean;
[...]
end;
constructor TTest.Create(VAR aHasChanged: Boolean);
begin
{ Adresse im internen Zeiger zwischenspeichern }
fPHasChanged:= @aHasChanged;
end;
Wenn ich jetzt an diese gespeicherte Adresse etwas innerhalb
der Klasse speichern will, gibt es einen Zugriffsfehler.
Delphi-Quellcode:
Procedure TTest.DoSomething;
begin
{ Wert setzen, hier knallt's dann... }
fPHasChanged^:= Boolean(false);
{ zum Test }
If Boolean(fPHasChanged^) = true then
ShowMessage('true') else
ShowMessage('false');
end;
Ich dachte, ich hätte den Pointer so richtig
dereferenziert (Das Dach hinter die Adresse)
Was habe ich denn hier falsch gemacht?
Dank und Gruß
Pfoto