Weiterzählen bis Inhalt kommt

  • Hallo miteinander,

    ich habe ein kleines Denk Problem.

    ich habe in einer Datei Suchworte stehen (jeweils zeilenweise)
    Die Datei lese ich in ein Array ein.

    Array Ebene 0 = Anzahl der gesamten Zeilen
    Array Ebene 1 - ... = Zeilenweise die Suchanfrage

    jetzt möchte ich die Nächste Suchanfrage aufrufen, das mache ich so.


    AutoIt
    .... 
    #include <IE.au3>                                                           ; Funkzionen für den Internet Explorer laden#include <Date.au3>                                                            ; Funkzionen füs Datum laden#include <file.au3>                                                            ; Funkzionen für Dateimenegment
    .... 
      $File_Suche = "/Suche_Import.txt"  $i_Suche    = 0                                                             ; kurzzeitgedächtnis  Global $aArray_Suche = ""                                                    ; Variable für Suchbegriffe Definiren_FileReadToArray(@DesktopDir & $File_Suche, $aArray_Suche)                  ; Datei für Suchbegrife auslesen
    .... 
        $i_Suche = $i_Suche + 1                                              ; Zähler für die zeilennummer um 1 erhöhen    if $aArray_Suche[0]< $i_Suche then        MsgBox(64, "Hinweis", "Keine Suchergebnisse mehr")        Exit ; Array[0] hat die Zeilenanzahl gespeichert    EndIf


    jetzt habe ich das Problem das eine Zeile auch mal Leer sein kann also würde ich gerne bei einer leeren ziele eine Zeile weiter Springen.
    das Würde ich dann so machen.


    AutoIt
    $i_Suche = $i_Suche + 1                                              ; Zähler für die zeilennummer um 1 erhöhen    if $aArray_Suche[0]< $i_Suche then        MsgBox(64, "Hinweis", "Keine Suchergebnisse mehr")        Exit ; Array[0] hat die Zeilenanzahl gespeichert    EndIf
        if $aArray_Suche[$i_Suche] = "" then
           $i_Suche = $i_Suche + 1                                              ; Zähler für die zeilennummer um 1 erhöhen
        EndIf

    Das geht jedoch nur dann wenn ich nur eine leer Zeile habe und nicht zwei aufeinander folgend.
    Einfach mal 100 If abfragen einzubauen finde ich etwas daneben, und ich muss auch jedes mal drauf achten das die zielen nummre dann nicht zu groß wird bevor ich das Array auslesen möchte sonst bekomme ich einen Error


    Wie kann ich es anstellen am besten mit einen Art Loop die Zeilennummer zu erhöhen bis wider Inhalt vorhanden ist oder das Ende erreicht ist wenn das Ende Erreicht ist soll das Programm beendet werden, mit einer kleinen Nachricht.


    Gruß Mücke

  • Probiers doch mit Do ... Until

    AutoIt
    Do
    	$i_Suche = $i_Suche + 1
    Until $aArray_Suche[$i_Suche] = ""

    Beim Ende einfach abfragen ob der Index der letzte ist

    AutoIt
    If $i_Suche = UBound($aArray_Suche) - 1 Then MsgBox(...)
  • He he, auf deinen Bassis habe ich den richtigen Denkanstoß bekommen. und mir ein Test Programm geschrieben.

    die Zeile 24. habe ich mit drin da mein Programm immer bei einen HotKeySet hier weiter Zählen soll/muss, damit ich das übrige Programm also Simulieren kann habe ich eine Schleife darum gelegt die Größer ist als das Test Array :)

    Danke.

    ich glaube zwar das man das noch Kompakter zusammen fassen kann doch das Funktioniert das ist wichtig.


    DANKE.

    Gruß Mücke