HI,
für Verwirrung wollte ich nciht sorgen. Es ist ein 'Versuch' einer Erklärung mit 'einfachen' Worten.
@Udontknow
Dein Beispiel verwendet ein TEdit mit der Text-Eigenschaft, dh. wenn
Text := usr.FullName; gesetzt wird,
wird eine Windowsbotschaft an das Steuerelement gesendet, in diesem
WM_SETTEXT.
Damit wird der Inhalt von usr.FullName nach Edit_Name.Text kopiert.
Bei der Zuweisung 'S := usr.FullName' passiert das ebend nicht und bei der Zuweisung von 'Result := S;'
kracht es ebend, das liegt an der Bedeutung von Result für den Compiler und dem lösen der Bindung von usr.
Wie gesagt/geschrieben mit 'einfachen' Worten.
Bei WideString greift ein anderer Mechanismus(auch ein kopieren der Inhalte von Source nach Dest), deshalb
auch keine
Exception. Aus diesem Grund kommt es auch zur keiner
Exception beim Aufruf einer Callback-Funktion.
Gruss
Alter Mann