Es ist vielleicht kein Fehler aber mir ist etwas aufgefallen, was ich merkwürdig finde:
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?
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.
blöd, gell... muss ich mal ändern...
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.
Naja,
LOCAL x
x = ""
PRINT "X=" + x, 0,0
schreibt ja "0". Also wäre "" schon auch OK, und kompatibel.