for-Schleife: x nimmt nach vollständigem Durchlauf wieder 0 an
-
Hi Leute!
Ein total komisches Problem! Hier der Code:for (x = 0; x < iAudioTracks; x++) { iTrackNumber = x + 1; tableModel1.Rows.Add(new Row()); tableModel1.Rows[x].Cells.Add(new Cell(iTrackNumber.ToString()) ); tableModel1.Rows[x].Cells.Add(new Cell(files[x]) ); tableModel1.Rows[x].Cells.Add(new Cell("")); tableModel1.Rows[x].Cells.Add(new Cell(files[x])); tableModel1.Rows[x].Cells.Add(new Cell("")); }
Wenn die Bedingung x < iAudioTracks nicht mehr erfüllt werden kann, wird x = 0 gesetzt und die Schleife wird noch zweimal komplett durchlaufen. Dann wird sie beendet. Also insgesammt 3 mal...
WIE GEHT DENN DAS???
Hab ich da was verpasst?
-
Also habe deine Code nur mal ums nachvollziehen zu können, abgeändert nur um den Effekt nachvollziehen zu können!!
Siehe:
int x, iAudioTracks = 5, iTrackNumber; // Diese Vorinitialisierung sieht man zwar bei deinem Code-Stueck nicht for (x = 0; x < iAudioTracks; x++) { iTrackNumber = x + 1; Console.WriteLine("Ausgabe {0}", iTrackNumber); }
Ergebnis: läuft wie erwartet von mir 5 mal durch und macht keine Mucken
Der Fehler sollt bei Dir also woanders liegen jedenfalls in der Schleife nicht sofern Du irgendwo sinnvoll vorinitialisierst!!!
Kann es sein das Du vielleicht eine Multithreading-Anwendung hast wo irgend ein Prozess während die Schleife läuft die Variable iAudioTracks oder die Variable iTrackNumber oder auch die Variable x etc. pp manipuliert?
Dann liese sich dieses Phänomen erklären!
Ansonsten muss der Fehler woanders liegen jedenfalls an der Schleife liegts nicht.mfg sclearscreen :xmas1:
-
freakSkater schrieb:
WIE GEHT DENN DAS???
Das geht ganz einfach. Du hast eine elementare Grundregel, nämlich Variablen so lokal wie möglich zu machen, verletzt. Die Definition von x gehört in die for-Schleife, wenn dort auch die Initialisierung stattfindet.
Alsofor( int x = 0; ...
Nur so kann ein außenstehender überhaupt nachvollziehen, was mit dem x geschieht und du kannst es dann auch besser sehen.