Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Revilo
Anmeldungsdatum: 26.12.2022 Beiträge: 78
|
Verfasst am: 29.05.2023, 00:58 Titel: Vermeintliche Seitenfehler |
|
|
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 |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4638 Wohnort: ~/
|
Verfasst am: 29.05.2023, 13:19 Titel: |
|
|
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 |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1230 Wohnort: Ruhrpott
|
Verfasst am: 29.05.2023, 14:55 Titel: |
|
|
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 |
|
|
|