Variable wird nicht erhöht?!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Düsi

Betreff: Variable wird nicht erhöht?!

BeitragMi, März 25, 2009 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin... Ich verzeifle gerade. -.-
Wenn ich alle Zeilen aus einer Funktion auskommantiere bleiben noch folgende Zeilen übrig:

Code: [AUSKLAPPEN]
Function InstrBack(Value$, Symbol$)
   Repeat
      Pos = Pos + 1
      Print Pos
   Forever
End Function


Ich rufe die Funktion so auf, wobei das ja egal sein sollte:
Code: [AUSKLAPPEN]
Print InstrBack("Hallo", "o")


Eigtl. sollte sich nun ja nur die Variable Pos in der Schleife in der Funktion dauernd um eins erhöhen... Das tut es aber nicht?!
Es wird immer nur 0 ausgegeben?
Was ist an diesen 2 simplen Zeilen falsch? Ich komme einfach nicht drauf. -.-

MfG

SpionAtom

BeitragMi, März 25, 2009 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist Pos global?
Sonst wird diese Variable bei jedem Funktionsaufruf zurückgesetzt auf 0.
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Düsi

BeitragMi, März 25, 2009 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
SpionAtom hat Folgendes geschrieben:
Ist Pos global?
Sonst wird diese Variable bei jedem Funktionsaufruf zurückgesetzt auf 0.

Es ist ja nur ein Funktionsaufruf... Und in der Funktion stehen nur die Zeilen
Code: [AUSKLAPPEN]
   Repeat
      Pos = Pos + 1
      Print Pos
   Forever

Da sollte es doch relativ egal sein, ob Pos nun Global ist?

Danke dennoch soweit. Smile
MfG

SpionAtom

BeitragMi, März 25, 2009 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Aso Embarassed jezt seh ich das erst.
Vielleicht arbeitest du falsch Backbuffer() und Flip(), da gibts Probleme mit der Anzeige bei Print.

https://www.blitzforum.de/foru...hp?t=31218
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Jo0oker

BeitragMi, März 25, 2009 15:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir funzt es super:

Code: [AUSKLAPPEN]

InstrBack("","")

Function InstrBack(Value$, Symbol$)
   Repeat
      Pos = Pos + 1
      Print Pos
   Forever
End Function


Sicher das du nicht irwas vergessen hast auszukommentieren?


Und @Spion,
Kann ja net sein das es daran liegt, da bei ihm immer 0 ausgegeben wird -> Er hat ne Grafikausgabe...

lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!
  • Zuletzt bearbeitet von Jo0oker am Mi, März 25, 2009 15:36, insgesamt einmal bearbeitet

robotx

BeitragMi, März 25, 2009 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso rufst du die Funktion mit einem Print auf?
Code: [AUSKLAPPEN]
Print InstrBack("Hallo", "o")


Da die Funktion keinen String Rückgabewert hat, kommt da natürlich nur Null raus. Ich gehe davon aus, dass die ursprüngliche Funktion irgendwo einen Returnwert hatte.

Edit: Habs getestet, geht auch mit Print bei mir.
www.botbomb.robotzgames.de
www.robotzgames.de
  • Zuletzt bearbeitet von robotx am Mi, März 25, 2009 15:36, insgesamt einmal bearbeitet

count-doku

BeitragMi, März 25, 2009 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

bei mir läuft alles einwand frei.

Hast du schonmal nur den Codeabschnitt laufen lassen?
Code: [AUSKLAPPEN]

Print InstrBack("Hallo", "o")

Function InstrBack(Value$, Symbol$)
   Repeat
      Pos = Pos + 1
      Print Pos
   Forever
End Function

Wenn nicht, löscht du vielleicht irgendwo den Bildschirm?

Mfg,
Count-Doku

Jo0oker

BeitragMi, März 25, 2009 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
robotx hat Folgendes geschrieben:
Wieso rufst du die Funktion mit einem Print auf?
Code: [AUSKLAPPEN]
Print InstrBack("Hallo", "o")


Da die Funktion keinen String Rückgabewert hat, kommt da natürlich nur Null raus. Ich gehe davon aus, dass die ursprüngliche Funktion irgendwo einen Returnwert hatte.



Weil er doch schrieb, das das die Auskommentierte Version der Funktion ist, vielleicht gibt sie später einen wert zurück Very Happy?

[EDIT]: @count-doku:
Kann ja net sein das es daran liegt, da bei ihm immer 0 ausgegeben wird -> Er hat ne Grafikausgabe...

lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!
 

Düsi

BeitragMi, März 25, 2009 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Komisch... Den kompletten Inhalt der Datei, diese ich compile und ausführe:
Code: [AUSKLAPPEN]
;============================================
; Funktion - Instr andersrum
; Paramente:
;    [STR] Value$ - String
;    [STR/CHR] Symbol$ - Zeichen, nach diesem gesucht werden soll
;
; Rückgabe:
;    [ERR] -1: Value ist leer
;    [ERR] -2: Symbol ist leer oder hat mehr als ein Zeichen
;    [ERR] -3: Das Symbol konnte nicht gefunden werden
;   [SUC] Position des Symbols
;=================================================
InstrBack("Hallo", "o")
Print "-------------------------"
WaitKey
Function InstrBack(Value$, Symbol$)
   ;==============================================
   ; Variablen
   ;==============================================
   ;Local L$
   ;Local Pos
   
   ;==============================================
   ; Value oder Symbol leer?
   ;==============================================
   ;If Len(Value) = 0 Then Return -1
   ;If Len(Symbol) <> 1 Then Return -2
   
   ;==============================================
   ; Symbol suchen
   ;==============================================
   Repeat
      ;L = Mid(Value, Len(Value)-Pos, 1)
      ;If L = Symbol Then Return Pos
      Pos = Pos + 1
      Print Pos
   Forever
   ;Until Len(Value) = Pos
   
   ;==============================================
   ; Symbol wurde nicht gefunden
   ;==============================================
   ;Return -3
End Function

Die Ausgabe:
http://s5b.directupload.net/fi...ty_png.htm

~EDITIERT~

Kommentarzeilen gekürzt, hat Layout zerschossen.
hamZta

BladeRunner

Moderator

BeitragMi, März 25, 2009 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Mir stellt sich auch die Frage nach dem Sinn der Funktion, denn Instr liefert dir ja genauso die Zeichenposition zurück.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Düsi

BeitragMi, März 25, 2009 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Mir stellt sich auch die Frage nach dem Sinn der Funktion, denn Instr liefert dir ja genauso die Zeichenposition zurück.

Gemäß meinen Wissen durchsucht Instr den String von vorne nach hintem nach der gesuchten Zeichenkette? Ich möchte aber den letzten Punkt oder den lezten Backslash von einer Zeichenkette ermitteln. :/

SpionAtom

BeitragMi, März 25, 2009 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

      pos = LEN(word$)
      SOLANGE pos > 0 WIEDERHOLE
          SCHAUE, OB MID(word$, pos, 1) = suchchar$
                FALLS JA, RETURN pos

     RETURN 0

Pseudo....



Edit: Kein Pseudo, aber nicht getestet

Code: [AUSKLAPPEN]

Function InstrBack(word$, char$)
  pos = Len(word$)
  While pos > 0
     If Mid$(word$, pos, 1) = char$ Then Return pos
  Wend
  Return 0
End Function
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Düsi

BeitragMi, März 25, 2009 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
SpionAtom hat Folgendes geschrieben:
Code: [AUSKLAPPEN]

      pos = LEN(word$)
      SOLANGE pos > 0 WIEDERHOLE
          SCHAUE, OB MID(word$, pos, 1) = suchchar$
                FALLS JA, RETURN pos

     RETURN 0

Pseudo....


Danke, funktioniert. Smile
Dennoch würde es mich interessieren, wo der Fehler in meinem Ansatz lag. :/

BladeRunner

Moderator

BeitragMi, März 25, 2009 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, das erklärt einiges.
Code: [AUSKLAPPEN]
Function lastinstr(zk$,su$)
   Local sulen = Len(su)
   Local zklen = Len(zk)
   Local pos = zklen
   If Instr(zk,su) Then
      Repeat
         pos=pos-sulen
      Until Instr(zk,su,pos)   
      Return Instr(zk,su,pos)
   EndIf   
End Function

Print lastinstr("Hullu Welt lu!","lu")
WaitKey()


Funzt hier fehlerfrei.

EDIT: oh, zu spät
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

faeX

Betreff: Rückgabe Null

BeitragDo, März 26, 2009 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Function InstrBack%(Value$, Symbol$)

...wie wärs damit? Smile

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group