AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
28.03.20 - 18:06:52
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Domino 8 und frühere Versionen
| |-+  ND7: Entwicklung (Moderatoren: eknori, koehlerbv)
| | |-+  Wie String kopieren? (=> call by value)
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Wie String kopieren? (=> call by value)  (Gelesen 3817 mal)
Basti*
Junior Mitglied
**
Offline Offline

Beiträge: 87


« am: 04.06.13 - 13:19:10 »

Hallo miteinander!

Wie kann ich einer Function einen Wert statt einer Referenz übergeben? (Call by Value statt call by Reference).

Ich hab eine Funktion, der ich einen String übergebe, diesen im Inneren verändere und dann den neuen Wert zurückliefere.

Zitat
function tuwas(dings as String)
    dim result as String
    result = strright(dings,"#")

   tuwas=result
end function

Aufgerufen wird das ganze per

Zitat
Dim teststring as String
Dim neustring as String

teststring = "Hallo Welt#Hello World"
neustring = tuwas(teststring)

Soweit so gut! Problem: wenn ich im Hauptprogramm den teststring noch in seiner ursprünglichen Form brauche, dann ist auch der verändert! => LS scheint per Reference die Variablen zu übergeben.

Hat jemand einen Tipp?
Grüße
Basti
Gespeichert
Peter Klett
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 2656



« Antworten #1 am: 04.06.13 - 13:39:02 »

Klassisch geht das mit ByVal

Function TuWas (ByVal s As String) As String
   s = ""
   ...
End Function

Alternativ kannst Du auch einfach die Variable in Ruhe lassen (so mache ich persönlich das, aber Geschmacksache)

Function TuWas (s As String) As String
   Dim mein_s As String
   mein_s = s
   'Verbiege mein_s
   ...
End Function


Gleiches gilt natürlich auf für Subs.

Ich finde es gut, dass nur die Referenzen zurückgegeben werden, denn so kann man mit einer Function oder Sub bei Bedarf mehrere Variablen gleichzeitig ändern.
Gespeichert
Basti*
Junior Mitglied
**
Offline Offline

Beiträge: 87


« Antworten #2 am: 04.06.13 - 13:50:46 »

Vielen Dank für den Tip! Smiley ByVal hab ich gleich mal ausprobiert. Kann es sein, dass man die Funktion dann speziel aufrufen muß? Bei mir kommt jetzt immer ein "Type mismatch on external name: tuwas".

Die Variable "in Ruhe lassen" hatte ich zu erst auch probiert, aber das hat bei mir nix geholfen. Wird bei einer einfache Zuweisung (a = b) nicht auch nur die Referenz übergeben?

Gespeichert
Tode
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6355


Geht nicht, gibt's (fast) nicht... *g*


« Antworten #3 am: 04.06.13 - 13:57:35 »

Nein, eine Zuweisung erstellt immer eine Kopie...
Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
Peter Klett
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 2656



« Antworten #4 am: 04.06.13 - 14:05:37 »

Vielen Dank für den Tip! Smiley ByVal hab ich gleich mal ausprobiert. Kann es sein, dass man die Funktion dann speziel aufrufen muß? Bei mir kommt jetzt immer ein "Type mismatch on external name: tuwas".
...
Du musst das Script, das die geänderte Function aufruft, neu übersetzen (Script ändern (z.B. Leerzeichen rein raus) und Designelement speichern).
Gespeichert
Basti*
Junior Mitglied
**
Offline Offline

Beiträge: 87


« Antworten #5 am: 04.06.13 - 14:42:09 »

Ok danke!! Jetzt geht es! Smiley
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: