Verschachtelte for schleifen

  • Guten Morgen zusammen ich komme bei meinem script nicht mehr weiter.

    um diesen Codeteil handelt es sich:


    Die erste schleife mit $i wird ausgeführt und im Tooltip ausgeben.
    Dann geht es in die zweit schleife ($j) . Ist er mit der $j fertig, ist das programm beendet. Er soll aber bei der $i weiter machen.
    wo habe den denkfehler?

    was der code später können soll:
    die Doppelten Zeilen in einer Txt löschen.

  • Hi,

    warum machst du es dann nicht so:

    [autoit]


    For $i= 1 to $CountLines
    $einlesen = FileReadLine($doppeltentf)
    $einlesen1 = $einlesen
    $einlesen2 = $einlesen
    ToolTip($einlesen,500,500)
    Sleep(2000)
    ToolTip($einlesen2,700,500)
    Sleep(2000)
    Next

    [/autoit]

    Aber wenn du die Doppelten einträge löschen willst gibt es bestimmt andere wege um das zu machen.
    Hast du mal gegoogelt? Du bist bestimmt nicht der erste der sowas vor hat.

    Gruß
    Daniel

  • Es ist wirklich bisschen aufwendig doppelte Zeilen mit Strings und Arrays zu filtern.
    Bevor du dich lange rumplagst mal ein Tipp zum Thema Scripting.Dictionary-Objekt.
    Dies ist ein Container welcher Informationen im Key-Value Format speichert.
    Da jeder Key nur einmal vorkommen darf eignet sich dieses sehr gut um Unique-Themen abzuhandeln.
    Für dein Problem mal hier ein kleines Beispiel wie man eine Datei in ein Array liest und mit Hilfe des Dictionarys dabei schon doppelte Zeilen rausfiltert:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $aArr = FileRead2ArrayUnique("Test.txt")
    If Not @error Then _ArrayDisplay($aArr)

    [/autoit] [autoit][/autoit] [autoit]

    Func FileRead2ArrayUnique(Const $sFName)
    ;by AspirinJunkie
    Local $sLine, $hFile = FileOpen($sFName, 0)
    If @error or $hFile = -1 Then Return SetError(1, @error, 0)
    Local $oDic = ObjCreate('Scripting.Dictionary') ;Erstelle Dictionary-Objekt

    Do
    $sLine = FileReadLine($hFile) ;lese nächste Zeile der Datei ein
    If @error Then ExitLoop ;Wenn Dateiende erreicht - raus
    If Not $oDic.Exists($sLine) Then $oDic.add($sLine, 0) ;Wenn die Zeile nicht schon als Key existiert - hinzufügen
    Until 0

    FileClose($hFile)
    Return $oDic.Keys() ;Wandle die Keys des Dictionarys in ein Array
    EndFunc

    [/autoit]
  • Guten Morgen zusammen ich komme bei meinem script nicht mehr weiter.

    um diesen Codeteil handelt es sich:


    Die erste schleife mit $i wird ausgeführt und im Tooltip ausgeben.
    Dann geht es in die zweit schleife ($j) . Ist er mit der $j fertig, ist das programm beendet. Er soll aber bei der $i weiter machen.
    wo habe den denkfehler?

    was der code später können soll:
    die Doppelten Zeilen in einer Txt löschen.


    Wenn Du eine Bestimmte Zeile lesen willst, dann mußt Du auch die Zeilennummer angeben:

    $einlesen = FileReadLine($doppeltentf, $i)

    Gruss Hans-Jürgen ^^