Forum: Die Delphi-IDE
by himitsu,
10. Sep 2021
Für lokale Variablen und Result wird Speicher nicht initialisiert. (Ausnahme sind gemanagte Typen wie String oder Interface, wo Delphi von sich aus das Speichermanagement sicherstellen muß)
Sie haben also den Wert, welcher ein vorhergehender Funktionsaufruf dort auf dem Stack hinterlassen hatte.
Es "kann" immer der selbe Wert sein, wenn die Aufrufe in gleicher Reihenfolge sind, aber es...
Forum: Die Delphi-IDE
by himitsu,
10. Sep 2021
Es kommt drauf an, was da im Speicher/Stack steht.
Wenn da irgendwas stand, was als Pointer interpregiert und mit einem kleinen Offset versehen (zu FHandle) auf reservierten Speicher zeigt, dann kann das als HWND für WM_GETTEXT genommen werden.
Selbst wenn dieses "HWND" ungültig ist, würde es keinen Fehler geben, da Delphi davon das Result/GetLastError nicht auswertet und somit nur einen...
Forum: Die Delphi-IDE
by himitsu,
10. Sep 2021
Erstmal sollte dir der Compiler schon länger eine Fehlermeldung geben, dass Variablen nicht initialisiert seien. (die zwei, welche vorher nicht auf NIL gesetzt wurden)
Somit ist ihr Wert per se zufällig, jenachdem was grade auf dem Stack vorher dort rumlag.
Aber auch NIL hilft nicht viel, da du ja auf Eigenschaften der Objekt-Instanz zugreifen willst.
Und dank dem EXIT können da unten...