Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Inventar klappt nicht!

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Grey Fox



Anmeldungsdatum: 16.02.2005
Beiträge: 13

BeitragVerfasst am: 01.03.2005, 13:46    Titel: Inventar klappt nicht! Antworten mit Zitat

Also ich möchte ein Inventar machen!
Doch ich habe das Problem das die Menueanwahl nicht Funktioniert!

Habe
Item(1 To 10) deklariert als array
Itemcounter ist shared und erhöht sich wenn ein Item(Index%) <> "" ist
naja den Rest entnimmt man aus den Code

Mir ist aufgefallen, das die Variable Index% während der ausführung auf 3 Springt, obwohl die For Schleife nur bis Itemanzahl% (also 2) geht!

Code:

FOR Index% = 1 TO Itemanzahl%
IF Item(Index%) <> "" THEN menuezahlInventar% = menuezahlInventar% + 1 ELSE
NEXT Index%

zahler2% = 0

DO WHILE InventarID% = 1
Index = 0
   SELECT CASE INKEY$

      CASE CHR$(0) + CHR$(80)
            IF zahler2% < menuezahlInventar% THEN zahler2% = zahler2% + 1 ELSE zahler2% = 1
      CASE CHR$(0) + CHR$(72)
            IF zahler2% > 1 THEN zahler2% = zahler2% - 1 ELSE zahler2% = menuezahlInventar% - 1
      CASE CHR$(13)
            EXIT DO
      CASE CHR$(27)
            InventarID% = 0
            zahler2% = 666
            EXIT DO
   END SELECT

   LOCATE 1, 1
   PRINT ""
   PRINT "I------------------------------------------------------------------------------I"
   PRINT "I----------------------------Was wollen sie tun???-----------------------------I"
   PRINT "I------------------------------------------------------------------------------I"
   PRINT ""
   PRINT "I------------------------------------------------------------------------------I"
   LOCATE (7 + Itemanzahl%), 1
   PRINT Some$

 FOR Index% = 1 TO Itemanzahl%

   IF Item(Index%) <> "" THEN
    giant% = 40 - ((LEN(Item(Index%))) / 2)
    Position% = LEN(Item(Index%))
    IF zahler2% + 1 = Index% THEN
    COLOR 15, 4
    ELSE COLOR 15, 0
    LOCATE (5 + Index%), 1
    PRINT "I"
     FOR add1% = 2 TO giant%
      LOCATE (5 + Index%), add1%
      PRINT "-"
     NEXT add1%
    LOCATE (5 + Index%), add1%
    PRINT Item(Index%)
     FOR add2% = (giant% + Position% + 1) TO 79
      LOCATE (5 + Index%), add2%
      PRINT "-"
     NEXT add2%
    LOCATE (5 + Index%), 80
    PRINT "I"
    LOCATE (6 + Index%), 1
    END IF
   ELSEIF Item(Index%) = "" THEN
   END IF

 NEXT Index%

LOOP
[/quote]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 01.03.2005, 16:34    Titel: Antworten mit Zitat

Auf den ersten Blick könnte ein Fehler vorkommen, weil du
am Anfang der DO WHILE Schleife schreibst

Code:

DO WHILE InventarID% = 1
Index = 0


Es müsste aber

Code:

DO WHILE InventarID% = 1
Index% = 0


sein.

Q(uick)Basic betrachtet Variablen mit dem selben "Namen" aber
unterschiedlichem Ende (z.B. %) als verschiedene Variablen, d.h.
in deinem Falle wird Index% nicht resettet, da du Index ohne %
schreibst.

Könnte es daran liegen??

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Grey Fox



Anmeldungsdatum: 16.02.2005
Beiträge: 13

BeitragVerfasst am: 02.03.2005, 08:50    Titel: Antworten mit Zitat

Ja dank das ist klar!!! grinsen

Aber ich meinte, das schon allein von der Logik das Inventar nicht hinhaut!
Ich wollte eine Prüfung die erstmal prüft ob das Item(Index%) <> "" wenn das der Fall ist dann soll er weiterhin Prüfen ob der zahler2% (von Tastenabfrage) + 1 = Der Derzeit befindlichen Zeile ist (mit Index% geht das hier nicht) Wenn das der Fall dann setze Color 15, 4 ansonsten 15, 0
Schreibe Text und Spaltenzähler + 1
Wenn Item(Index%) = "" ist dann mach nichts
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 02.03.2005, 13:38    Titel: Re: Inventar klappt nicht! Antworten mit Zitat

Hallo!

Grey Fox hat Folgendes geschrieben:
Mir ist aufgefallen, das die Variable Index% während der ausführung auf 3 Springt, obwohl die For Schleife nur bis Itemanzahl% (also 2) geht!


Bei FOR...NEXT-Schleifen ist der Wert der Zählvariablen am Ende immer um einen Zählschritt grösser, als der angegebene Endwert.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 02.03.2005, 17:10    Titel: Antworten mit Zitat

Vielleicht sollte man hier eine DO-LOOP Schleife nehmen,
macht man ja sonst eigentlich nicht, aber hier...

Code:

Index% = Startwert%
DO
 Index% = Index% + 1
LOOP UNTIL Index% = 2


jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz