Zitat von
13Horst37:
Alpha wird von Showmessage unverändert geöffnet.
Was mach ich falsch?!
Du verwechselst Call By Value mit Call By Reference. Der Unterschied? Nun, wenn Du die Funktion so definiert hast, wie in meinem Beispiel, bekommt die Funktion den Wert des Strings übergeben (Call By Value) - nicht aber den String selbst. Das bedeutet, daß die Funktion mit einer Kopie arbeitet und das Original (alpha in Deinem Falle) niemals anrührt. Im Gegensatz dazu steht Call By Reference. Dabei wird eine Referenz auf die Variable übergeben. Alles was Du mit der Variable also in der Funktion anstellst, betrifft die Originalvariable. Es gibt keine Kopie.
Es gibt jetzt 2 Möglichkeiten:
Die Funktion gibt den String zurück. Entspechend könntest Du sagen "alpha := Form1.ExtractSubStringFromString(alpha);".
Oder Du änderst die Funktionsdefinition dahingehend, daß der String nicht by Value übergeben wird, sondern by Reference. Dazu musst Du in der Definition der Funktion ein "var" vor den Parameter Namen setzen. Also z.B. "function ExtractSubStringFromString(var StringToExtractFrom : string) : string;".