Autor Thema: Call by Value/by Reference  (Gelesen 1584 mal)

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
Call by Value/by Reference
« am: 26.11.02 - 16:15:58 »
Kann man in Notes eigentlich Variablen per Referenz bzw. per Wert übergeben?

In meinem Code sieht's in etwa so aus:

Code
Dim strTemp1, strTemp2 As String

strTemp1 = "Vorname Zweitname Nachname"
strTemp2 = SplitName ( strTemp1)


Wenn ich am Ende haben beide Variablen bei mir den gleichen Wert - kann ich das irgendwie verhindern?

Danke schön im Voraus!
Jérôme

Offline Till_21

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • I love Germany
Re:Call by Value/by Reference
« Antwort #1 am: 26.11.02 - 16:26:03 »
das liegt aber nicht an dem stück code, dass du hier zitiert hast.
das liegt an der function Splitname, die den parameter weiterverarbeitet und nicht einfach nur den manipulierten string zurueckgibt.
in deinem fall muesste der funktionsaufruf so lauten :
call splitname(strTemp1)

till

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
Re:Call by Value/by Reference
« Antwort #2 am: 26.11.02 - 16:31:55 »
Hups. Man lernt nie aus.

Dann sollte ich also immer die an die Fkt. übergebene Variable in der Funktion nochmal neu in einer anderen Variablen speichern? Außer, wenn ich sie wirklich verändern will?

Offline Till_21

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • I love Germany
Re:Call by Value/by Reference
« Antwort #3 am: 26.11.02 - 16:39:42 »
Hups. Man lernt nie aus.

Dann sollte ich also immer die an die Fkt. übergebene Variable in der Funktion nochmal neu in einer anderen Variablen speichern? Außer, wenn ich sie wirklich verändern will?

Nicht in einer anderen Variable, sondern in der variable, die die funktion repräsentiert :
d.h. eine funktion hat immer einen rueckgabewert :
in dem Beispiel ein string:
function tostring(inputtmp) as string
  tostring = cstr(inputtmp)
end function

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
Re:Call by Value/by Reference
« Antwort #4 am: 26.11.02 - 16:58:44 »
Na, das hab ich aber genauso gemacht...

Was ich aber auch gemacht habe, ist, in der Funktion selbst mit der Variablen, die ich übergeben habe, zu arbeiten

Function SplitName (strUserName As String)
  .
  .
  .
  strUserName = Left$ (strUserName, 5)
  .
  .
  .
  SplitName = strUserName
End Function

So in etwa...

Offline Jérôme

  • Aktives Mitglied
  • ***
  • Beiträge: 108
  • Geschlecht: Männlich
  • Teigwaren heißen Teigwaren weil sie mal Teig waren
    • jerome-gamez.de
Re:Call by Value/by Reference
« Antwort #5 am: 19.12.02 - 15:01:06 »
okay, ich hab die Lösung...

für Übergaben per Wertkopie (Call by value) verwendet man einfach das Schlüsselwort byval vor dem Variablen-Namen.

*froi* Selbst rausgefunden ;)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz