Problem beim Auslesen von Daten

  • So ich habe ein mehr oder weniger großes Problem.
    Also ich habe in einer .txt Datei ICQ Nummern mit Passwort nach folgendem Muster gespeichert.

    123456789:abcde
    9879879:musterpw
    55533322:test

    Vor dem ":" die UIN und danach das Passwort. Es gibt unterschiedliche lange UINS.
    So ich habe nun ein Script, dass soll mir in einer Msg Box die UIN, dann ok klicken, dann das Passwort in einer neues MsgBox zeigen.
    Und das Reihe für Reihe.
    Bei Reihe 1 gibt er z.B. aus

    123456789 (ok klick)
    abcde (ok ende)

    Wenn er nur einer Reihe abfragen soll klappt das problemlos, aber als ich das Script dann so modifiziert habe,dass es mehrer Reihen macht,
    klappte es nicht mehr.
    Script für nur eine Abfrage:

    [autoit]

    $uinlist= FileOpen("icquins.txt", 0)

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

    If $uinlist = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf
    $x = 1

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

    $uinb = ""
    For $i = 1 to 10
    $uina = FileRead($uinlist,1)
    If @error = -1 Then ExitLoop

    If StringisDigit($uina) Then
    Else
    ;Wenn UINs unterschiedlich lang sind, dann brich Anneinanderreihen des Strings ab
    If $i = 6 then ExitLoop
    If $i = 7 then Exitloop
    If $i = 8 then Exitloop
    If $i = 9 then Exitloop
    EndIf
    ;String wird in jedem Durchlauf ein Zeichen länger
    $uinb = $uinb & $uina
    Next

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

    ;Passwort herausfiltern (Anfang abschneiden)
    $line = FileReadLine ($uinlist,1)
    $pass = StringTrimLeft ($line,$i)

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

    MsgBox (0, "UIN:",$uinb)
    MsgBox (0, "PASS:",$pass)

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

    FileClose($uinlist)

    [/autoit]

    Wie kann ich das Script nun so abändern das es Reihe für Reihe die UINs+Passwörter abfragt und ausgibt ?

    Vielen Dank schonmal im vorraus ;)

  • Wie genau kann ich das mit StringSplit realisieren ?
    Kann ich den String durchteilen und alles rechts vom ":" abschneiden ?
    Das mit der .ini ist eine gute Idee. Jedoch weiß ich nicht ob du meintest, dass ich die UIN Liste als .ini speichern soll oder ob ich einen .ini zum zwischenspeichern verwenden soll ?

    [autoit]


    $uinb =""

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

    Do

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

    $uina = FileRead ($uinlist,$i)
    $uinb = $uinb & $uina

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

    Until Not StringIsDigit ($uina)

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

    $uin = StringSplit ($uinb,":")

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

    MsgBox (0, "UIN:",$uinb)

    [/autoit]
    • Offizieller Beitrag

    So würde es mit INI gehen:

    [autoit]

    Local $INI = @ScriptDir & '\meine.ini'
    ; Inhalt der INI
    #cs
    [verbindungen]
    uin_1=pw1
    uin_2=pw2
    uin_3=pw3
    uin_4=pw4
    #ce

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

    Local $arVerbindungen = IniReadSection($INI, 'verbindungen')
    ; $arVerbindungen ist ein 2D-Array mit allen Schlüssel-Wert-Paaren der Sektion 'verbindungen'
    ; $arVerbindungen[0][0] enthält die Anzahl der Schlüssel-Wert-Paare
    ; $arVerbindungen[1][0] = Schlüssel 1 (UIN1)
    ; $arVerbindungen[1][1] = Wert 1 (PW1) usw.

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

    ; Ausgabe aller Werte
    For $i = 1 To UBound($arVerbindungen) -1
    ConsoleWrite('Verbindung: ' & $i & ' UIN: ' & $arVerbindungen[$i][0] & @TAB & 'PW: ' & $arVerbindungen[$i][1] & @CRLF)
    Next

    [/autoit]
  • Genial, ich danke dir vielmals ;)
    Soweit bin ich in Autoit noch gar nicht fortgeschritten um auf eine solche Idee zu kommen :)