Einzelnen Beitrag anzeigen

Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#13

Re: Speziellen Substring aus String kopieren

  Alt 25. Jun 2009, 00:45
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;".
Fridolin Walther
"While Mr. Kim, by virtue of youth and naiveté, has fallen prey to the inexplicable need for human contact, let me step in and assure you that my research will go on uninterrupted, and that social relationships will continue to baffle and repulse me."
  Mit Zitat antworten Zitat