Hey Leute,
die Regex-Lösung von Andy finde ich klasse(, hätte den Einzeiler aber nicht hinbekommen).
Hierzu:
Ja, sicher... genau davon reden wir doch... und ja, Step 1 kann man weglassen, weil es Default ist... und was innerhalb der Schleife passiert, ist wieder eine völlig andere Sache!
Die in deinem Test-Script ermittelten Zeiten machen keinen Sinn, wenn der Code innerhalb der beiden Schleifen unterschiedlich ist... in der ersten For...Next prüfst bei jedem Durchgang UBound... das kostet zusätzliche Zeit... und ja, je größer das Array, umso länger braucht UBound, um die Anzahl der Zeilen im Array zu ermitteln - aber... entweder ist es ein Array mit fixer Größe, oder an irgendeiner Stelle muss die Anzahl der Zeilen im Array mit UBound ermitteln werden... und dann ist es egal, wo dies getan wird.
Fehlt da nicht noch was?
If 999 Then
Bei If 999 Then fehlt nichts. Schau dir mal die Schleife mit Ubound an. Da wird in meinem sinnlosen Beispiel dasselbe gemacht.
Sorry, du hast einfach nicht verstanden.
Du redest von der For $i = 0 To UBound($aFile) -1 Step 1
Du schreibst selbst, dass man Ubound dann innerhalb der Schleife nicht mehr nutzen sollte. Allerdings war meine ursprüngliche Aussage ja genau auf diesen Fehler in deinem ersten Skript bezogen!
For $i = 0 To UBound($aFile) -1 Step 1
If $i < UBound($aFile) -1 And StringLeft($aFile[$i], 3) = '# 2' And StringLeft($aFile[$i + 1], 3) = '# 1' Then
Innerhalb der Schleife prüfst du bei jedem Durchlauf, ob schon das letzte Element erreicht ist. Davon habe ich abgeraten. Du hast das zitiert und "Nope".. gesagt. Daraufhin habe ich dir das Beispiel mit unterschiedlich großen Arrays und Schleifen gegeben, in denen nichts anderes passiert, als einmal eine statische Größe zu prüfen und eine immer neu ermittelte Größe zu prüfen...
Aber richtig ist auch die Antwort von alpines , dass es meist vernachlässigbar ist. Eigentlich hatte ich mir das Skript geschrieben, um seine Aussagen nachvollziehen zu können.