Im abschließenden
End;
einer Funktion werden die lokalen Variablen freigegeben.
Es steht hier also quasi Folgendes in deinem
End;
drin.
Delphi-Quellcode:
Ding := '';
Ergebnis_dereferenziert := '';
Und wenn es da zu einem Fehler kommt, dann hast
du diese Strings wohl "zerstört", denn bei defekten Strings muß es ja zu Problemen kommen.
Weißt du eigentlich was
StringToWideChar macht?
> dieses kopiert bis zu 20 Zeichen von "Ding" in den Speicherbereich von "Ergebnis"
> und du hast für "Ergebnis" keinen Speicher reserviert,
womit du, da "Ergebnis" nicht initialisiert ist und somit einen "willkürlich" rumzeigenden Pointer darstellt, wild in den Speicher deiner Anwendung reinschreibst und womöglich etwas Wichtiges überschreibst ... hier also zufällig die tempörären Strings, die Rücksprungadresse oder etwas anderes, welches danach ausgeführt werden soll.