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:

Vermeintliche Seitenfehler

 
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
Revilo



Anmeldungsdatum: 26.12.2022
Beiträge: 78

BeitragVerfasst am: 29.05.2023, 00:58    Titel: Vermeintliche Seitenfehler Antworten mit Zitat

Hallo Leute,
ich schlage mich seit längerem mit einem Problem umher, das mich schon einige Nerven gekostet hat:

Ich habe eine Variable X wie folgt definiert:
dim shared X(1 to 9) as integer

Angenommen ich lasse eine Schleife mit Zähler i von
i= 1 bis i = 9 laufen, also etwa wie folgt:
for i=1 to 9
' Jeweilige Befehle, z.B. in einem SUB
next

i dürfte eigentlich also nur bis maximal 9 laufen.
So ist es ja durch die "For-Next-Schleife" vorgegeben.

Manchmal kommt es aber vor, daß für i auch eine eigentlich unmögliche 10 entsteht. Wie kann das sein?

Wenn man i als Index der Variablen X benutzen möchte, bekommt man in diesem Fall enorme Probleme. Man bekommt immer die Mitteilung
("falscher Index"). Ist ja auch logisch. Wenn ich X(1 bis 9) definiert habe,
kann es natürlich kein X(10) geben.

Man muß aber erst mal darauf kommen, daß hier eine zufälligerweise "unberechtigte 10" im Spiel ist. Wie gesagt, das hat mich schon einige Nerven und viel Zeit gekostet.
Hierbei handelt es sich wohl um einen sogenannten "Seitenfehler".

Wie kann so etwas überhaupt vorkommen?
Kann man das irgendwie umgehen/vermeiden?

Mit netten Grüßen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4638
Wohnort: ~/

BeitragVerfasst am: 29.05.2023, 13:19    Titel: Antworten mit Zitat

Ein Problem bekommst du, wenn die Laufvariable i nochmal irgendwo anders verändert wird (und eigentlich auch nur dann). Woran es in deinem Fall liegt, kann ich ohne Quelltext nicht sagen. Ein sehr beliebter Fehler ist aber etwas in dieser Art:
Code:
FOR i = 1 TO 10
  PRINT i
  FOR i = 5 TO 15
    ' tue hier erst einmal nichts
  NEXT
  PRINT i
NEXT

Die FOR-Schleiife im Inneren ändert auch den Wert für die äußere Schleife. Möglichkeiten für solche unbeabsichtigte Änderungen gibt es allerdings viele.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1230
Wohnort: Ruhrpott

BeitragVerfasst am: 29.05.2023, 14:55    Titel: Antworten mit Zitat

Ergänzend dazu könnte man noch anmerken, daß die Laufvariable nach Durchlaufen der FOR..NEXT - Schleife immer den Wert <Obergrenze + STEP> hat.
Code:
FOR x = 1 TO 9
        PRINT x
NEXT
PRINT
PRINT x


Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
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