Einzelnen Beitrag anzeigen
Ungelesen 21.10.17, 16:32   #3
Wornat1959
Profi
 
Registriert seit: Aug 2016
Beiträge: 1.859
Bedankt: 6.235
Wornat1959 leckt gerne myGully Deckel in der Kanalisation! | 2119272 Respekt PunkteWornat1959 leckt gerne myGully Deckel in der Kanalisation! | 2119272 Respekt PunkteWornat1959 leckt gerne myGully Deckel in der Kanalisation! | 2119272 Respekt PunkteWornat1959 leckt gerne myGully Deckel in der Kanalisation! | 2119272 Respekt PunkteWornat1959 leckt gerne myGully Deckel in der Kanalisation! | 2119272 Respekt PunkteWornat1959 leckt gerne myGully Deckel in der Kanalisation! | 2119272 Respekt PunkteWornat1959 leckt gerne myGully Deckel in der Kanalisation! | 2119272 Respekt PunkteWornat1959 leckt gerne myGully Deckel in der Kanalisation! | 2119272 Respekt PunkteWornat1959 leckt gerne myGully Deckel in der Kanalisation! | 2119272 Respekt PunkteWornat1959 leckt gerne myGully Deckel in der Kanalisation! | 2119272 Respekt PunkteWornat1959 leckt gerne myGully Deckel in der Kanalisation! | 2119272 Respekt Punkte
Standard

@baldurgulda:
Ja das Konstrukt For Each ist nicht für diese Anforderung gemacht. Ich würde aber auf jeden Fall bei einer echten Zählschleife bleiben. Du hast dir unbemerkt einen Fehler eingebaut.

Mal angenommen die Datei arrDateilist[0] gibt es nicht und es wird FALSE als boolscher Wert zurückgegeben - im Else-Fall ziehst du jetzt 1 ab und deine Zählvariable i steht auf -1.
Es wurde danach gefragt das die Prüfung nochmal mit der gleichen Datei wiederholt werden soll. Also ist die Subtraktion falsch. Für den geschilderten Fall kommt es zu einem Out-Of-Bounds-Error wegen arrDateiliste[-1]

@hondocrx
Ohne mich jetzt mit der Syntax von VB auszukennen tiefer würde ich bei der echten Zählschleife bleiben. Mach es wie folgt - musst du dann nur in passende VB-Syntax anpassen.

Code:
for (int lauf=0; lauf<Größe des Array arrDateiliste;lauf++)
{
     if (existiertDatei(arrDateiliste[lauf]))
     {
           mache irgendwas;
      }
     else
     {
           mache irgendwas;
           mache ne Pause;
           
           lauf--;
      }
}
Hier wird im Else-Zweig auch abgezogen, allerdings findet das lauf++ auch noch statt das immer automatisch kommt.
Noch etwas wenn die Datei nicht existiert und beim zweiten mal auch nicht dann prüft er weiter und weiter und weiter. Du musst also noch eine Art Abbruchbedingung einbauen damit du nicht in ein Endlossschleife steckenbleibst.

Vielleicht so:
Code:
int wie_oft_geprüft=0;
for (int lauf=0; lauf<Größe des Array arrDateiliste;lauf++)
{
     if (existiertDatei(arrDateiliste[lauf]))
     {
           mache irgendwas;
      }
     else
     {
           mache irgendwas;
           mache ne Pause;

           if (wie_oft_geprüft<2)
           {
               lauf--;
               wie_oft_geprüft++;
           }
           else
           {
               wie_oft_geprüft=0;
            }
      }
}
Jetzt wird die Zählvariable lauf aus der For-Schleife nur dann zurückgesetzt um 1 wenn nicht öfters als schon 2 mal geprüft worden ist. Sonst wird mit der nächsten Datei fortgefahren weil lauf nicht zurückgesetzt wurde.
Wornat1959 ist offline   Mit Zitat antworten