Vergleich von Array

  • Hallo,

    Ich möchte in AutoIt folgendes realisieren, komme aber nicht weiter :

    Eine Textdatei mit einem Ort wird eingelesen, mit diesem Ort geht das Programm nun auf eine Excel Tabelle (Name, Wohnort, Alter..)und vergleicht den Wert in der zweiten Spalte (Wohnort) jeder Zeile mit dem Ort aus der Textdatei. Nun möchte ich, dass mir jede dieser Zeilen ausgegeben wird, wo der Wohnort gleich ist (MsgBox o.ä.).

    Ich habe die Exceltabelle nun in ein Array eingelesen und kann dieses auch ausgeben, aber ich weiß nicht wie die Textdatei eingelesen werden soll und wie der Vergleich funktionieren soll.

    Ich hoffe auf eure Hilfe!

    Gruß

  • Du kannst einfach eine ini schreiben, die dann mit

    [autoit]

    IniReadSection

    [/autoit]

    ausgelesen wird. Da kommt auch direkt ein Array raus.

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Danke für den Tipp! Ich möchte es aber wenn möglich mit einer normalen Textdatei realisieren. Hat jemand eine Idee für den Vergleich mit dem Array und der Textdatei?

  • Meinst du

    [autoit]

    FileRead

    [/autoit]

    ?

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

    • Offizieller Beitrag

    So geht's:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <Excel.au3>
    $oExcel = _ExcelBookOpen(@ScriptDir & '\Mappe1.xls')
    $aArray = _ExcelReadSheetToArray($oExcel)
    _ExcelBookClose($oExcel)
    $aSearch = StringSplit(FileRead(@ScriptDir & '\Ort.txt'), @CRLF, 1)
    If $aSearch[0] = 1 And $aSearch[1] = '' Then Exit MsgBox(0, '', 'Kein Suchwort gefunden!')
    For $row = 1 To $aArray[0][0]
    For $i = 1 To $aSearch[0]
    If $aSearch[$i] = $aArray[$row][2] Then MsgBox(0, '', 'Name = ' & $aArray[$row][1] & @CRLF & 'Alter = ' & $aArray[$row][3])
    Next
    Next

    [/autoit]


    In "Ort.txt" dürfen auch mehrere Orte (durch @crlf getrennt) stehen.

  • Vielen Dank! Funktioniert jetzt super! Eine Frage hätte ich noch :

    Wie kann ich es machen, dass das Programm mir jetzt nicht nur die anderen 2 Werte ausgibt, sondern die ganze Zeile aus Excel (Also wenn die Tabelle mehr Spalten hat) ?

    Vielen Dank nochmal für die tolle Hilfe!

    • Offizieller Beitrag

    Dann muss man alle Spalten dieser Zeile einlesen. Das geht so:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <Excel.au3>
    $oExcel = _ExcelBookOpen(@ScriptDir & '\Mappe1.xls')
    $aArray = _ExcelReadSheetToArray($oExcel)
    _ExcelBookClose($oExcel)
    $aSearch = StringSplit(FileRead(@ScriptDir & '\Ort.txt'), @CRLF, 1)
    If $aSearch[0] = 1 And $aSearch[1] = '' Then Exit MsgBox(0, '', 'Kein Suchwort gefunden!')
    For $row = 1 To $aArray[0][0]
    For $i = 1 To $aSearch[0]
    If $aSearch[$i] = $aArray[$row][2] Then
    $out = ''
    For $col = 1 To $aArray[0][1]
    $out &= $aArray[$row][$col] & ', '
    Next
    MsgBox(0, '', $out)
    EndIf
    Next
    Next

    [/autoit]