vb.net Frage zu For Each -Schleife
Hallo!
Ich habe ein Array mit bestimmten Dateinamen welche gesucht werden sollen. PHP-Code:
Hat jemand eine Idee? MfG |
Mit For Each klappt das so nicht ;-) Bei dieser Schleife hat du keinen Zugriff auf den Interator ...
Besser du verwendest Dim i As Integer = 0 While i < arrDateiliste.lenght if arrDateilist(i) i += 1 else i = i - 1 end if End While |
@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++) 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; |
Päpstlicher wie der Papst ;) Ein leeres arrDateiliste.lenght gibt 0 zurück und 0 < 0 geht schwer in die Schleife :D
|
Das war nicht das Problem. Ich spreche nicht von einem von einem leeren arrDateiliste. Das wäre ja nur ein Sonderfall. Hinter arrDateiliste[x] stehen Strings die Dateinamen enthalten sollen. Der Dateiname wird dann genommen und es soll geprüft werden obs dazu die Datei gibt. Wenn nein machst du i=i-1;
Startet man also mit arrDateiliste[0]="irgendeinName" und die Prüfung sagt "Datei gibts nicht" kommt danach arr_Dateiliste[-1] wegen i=i-1. Das Array ist nicht auf einmal kleiner geworden wo es vorher noch den Namen kannte. Deswegen kann man auch in einen Out-Of-Bounds-Error laufen. Grundsätzlich ist i=i-1 wie du sagst, falsch. Du bleibst nicht auf dem Dateinamen zu einer Datei stehen, sondern gehst im Array einen Dateinamen zurück. Das war mein Einwand. Ist vielleicht nicht so klar rüber gekommen. |
Wenn man bei einer Grundsatzfrage "päpstlicher wieder Papst" sein will, kommt nie was klar rüber ;) In VB.NET ist ein arrDateiliste[0]="irgendeinName", abgefragt mit arrDateiliste.lenght = 1 :D
Und hondocrx fragte: setz die FOR-Schleife um 1 zurück um dieselbe Datei nochmals zu prüfen ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:11 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.