Weil ich in einer Anwendung eine Methode ersetzen will, die bereits existent ist und an vielen Stellen verwendet wird. Das Ding selbst ist in Assembler geschrieben und gibt mir einen Pointer auf ein Objekt zurück.
Das muss doch auch in Pascal irgendwie gehen? Und wieso verschwindet das Objekt, obwohl niemand es freigibt?
Weil in der procedure die Adresse der lokalen Variablen zurückgegeben wird
Delphi-Quellcode:
procedure Test(var Zeiger: PMyClass);
var
MyObject: TMyClass;
begin
MyObject := TMyClass.Create;
MyObject.Wert := 1234;
Zeiger := @MyObject; // Das zeigt jetzt auf die lokale Variable auf dem Stack
end;
Das kann so nicht funktionieren