Vielleicht geht's so: Einander zugewiesene Strings zeigen ja normalerweise solange auf denselben Speicherbereich, bis man sie ändert. Irgendwo in der Struktur TmyTest muss es einen Zeiger auf denselben String geben, wie getTest ihn zurückliefert.
(ungetestet)
Delphi-Quellcode:
type
PString = ^
string;
function FindStringReference(Obj: Pointer; Size: Integer;
const TheString:
string): PString;
begin
while Size >= 8
do
begin
Obj := Pointer(Integer(Obj) + 4);
dec(Size, 4);
if PInteger(Obj)^ = Integer(@TheString)
then
begin
Result := PString(Obj);
Exit;
end;
end;
Result :=
nil;
end;
// Aufrufen mit:
FindStringReference(myObj, SizeOf(myObj), myObj.getTest)^ := '
Neuer Text';