Seite 1 von 1

ProcedureReturn T$ ;????

Verfasst: 06.12.2007 12:39
von Tsuki-Namida
Hallo,
ich habe folgende Procedure geschrieben...

Code: Alles auswählen

Procedure StringLesen$(StringName$)
ForEach StringList()
  If StringList()\StringName = StringName$
    T$ = StringList()\String
    Break
    ProcedureReturn T$
  EndIf
 Next
EndProcedure
was ist da falsch?

ich bekomme jedenfalls vom Compiler diese Meldung ausgegeben:
[COMPILER] Line ***: 'ProcedureReturn' expects a numerical value, not a string.

aber ich erwarte nun mal einen string zurück und keine variabel....

wenn ich das so mache:

Code: Alles auswählen

Procedure StringLesen.s(StringName$)
bekomme ich das hier zurück...
[COMPILER] Line ***: A procedure musr begin wih a '('

da bin ich noch mehr überfragt....


Bitte, bitte, bitte, bitte, bitte, bitte, bitte helft mir.....

Verfasst: 06.12.2007 12:44
von Rings

Code: Alles auswählen

Procedure.s StringLesen(StringName$)
ForEach StringList()
  If StringList()\StringName = StringName$
    T$ = StringList()\String
    Break
    ProcedureReturn T$
  EndIf
 Next
EndProcedure

Verfasst: 06.12.2007 12:50
von Tsuki-Namida
:shock: :coderselixir:

*an den kopfhau*

danke... da kann das ja nichts werden wenn ich das so mache wie oben beschrieben danke das klapt natürlich xD

Verfasst: 06.12.2007 13:06
von Deeem2031
Stellt sich noch die Frage wozu das Break da is, bzw. warum das ProcedureReturn an der falschen Stelle ist? Weil so wie es da steht wird ProcedureReturn doch nich ausgeführt, weil vorher immer per Break aus der Schleife gesprungen wird. Ich schätze du wolltest das so schreiben:

Code: Alles auswählen

Procedure.s StringLesen(StringName$) 
ForEach StringList() 
  If StringList()\StringName = StringName$ 
    T$ = StringList()\String 
    Break 
  EndIf 
 Next 
 ProcedureReturn T$ 
EndProcedure
bzw. weil es genau das selbe ergibt und eigentlich auch schneller ist:

Code: Alles auswählen

Procedure.s StringLesen(StringName$) 
ForEach StringList() 
  If StringList()\StringName = StringName$ 
    T$ = StringList()\String 
    ProcedureReturn T$ 
  EndIf 
 Next 
EndProcedure
Solang du nicht mehr in die Procedure einbauen willst, würde ich die untere Version benutzen.

Verfasst: 06.12.2007 15:54
von AND51

Code: Alles auswählen

Procedure.s StringLesen(StringName$) 
ForEach StringList() 
  If StringList()\StringName = StringName$ 
    ProcedureReturn StringList()\String 
  EndIf 
 Next 
EndProcedure
Wäre sogar noch 1 Zeile kürzer, denn man braucht das Rückgabeergebnis nicht in eine temporäre Variable zwischenspeichern.