ProcedureReturn T$ ;????

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

ProcedureReturn T$ ;????

Beitrag 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.....
Bild
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Beitrag 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
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag 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
Bild
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag 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.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten