Rückgabewert einer Funktion

Previous topic - Next topic

S.O.P.M.

Es ist vielleicht kein Fehler aber mir ist etwas aufgefallen, was ich merkwürdig finde:

Code (glbasic) Select
FUNCTION getinitialcmd$: l
LOCAL i1, strval1$
IF l < LEN(plns$[])
FOR i1 = 0 TO LEN(plns$[l]) - 1
IF MID$(plns$[l], i1, 1) <> " "
strval1$ = strval1$ + MID$(plns$[l], i1, 1)
ELSEIF strval1$ <> ""
RETURN strval1$
ENDIF
NEXT
ENDIF
ENDFUNCTION
Diese Funktion soll das erste Wort einer String-Feldvariable zurückgeben bzw. einen Nullstring, also "", wenn sie nur Leerzeichen enthält oder eine Länge von 0 hat. Dies nur mal zum Verständnis, was die Funktion machen soll.

Funktionen, die einen nummerischen Wert zurück geben, haben einen Rückgabewert von 0, sofern nicht ein RETURN mit einer Angabe eines Wertes aufgerufen wurde, richtig? Nun dachte ich mir, müsste Gleiches für Funktionen mit einem Stringreturn gelten, sprich, wenn kein RETURN mit Wert, dann geben sie "" zurück. Dies scheint aber nicht so zu sein. In meinem Programm gibt diese Funktion nie "" zurück, selbst, wenn das Ende der FOR-Schleife erreicht wurde! Wenn ich nach dieser FOR-Schleife ein RETURN "" einfüge, funktioniert alles, wie es soll.

Meine Frage daher: ist das normal?
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Quentin

Stimmt. Ein Leerstring wäre dann sinnvoller. Allerdings steht es auch so in der Hilfe. Ohne explizite Angabe von RETURN oder bei RETURN ohne Wert wird '0' zurückgeliefert. Gilt dann offensichtlich auch für Strings.

Kitty Hello

blöd, gell... muss ich mal ändern...

S.O.P.M.

Es wäre schon logischer, wenn ein Leerstring zurück gegeben würde. Ich denke, es lohnt nicht, dies zu ändern. Wenn es so seine Richtigkeit hat, würde ich es lassen, Gernot. Kann ja mal nachgucken, wie PB das z.B. handelt.
Notebook PC Samsung E372 Core i5 @ 2,6 GHz; 4 GB RAM; Win 7 Home Premium

Kitty Hello

Naja,
Code (glbasic) Select
LOCAL x
x = ""
PRINT "X=" + x, 0,0
schreibt ja "0". Also wäre "" schon auch OK, und kompatibel.