Text in Array einlesen

  • Guten Abend alle zusammen,

    Habe folgendes Problem.
    Ich habe eine datei mit 7 verschiedenen Werten in einer zeile die durch ein ";" getrennt sind.
    Habe folgenden Code aber es wird kein Array erstellt.

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <File.au3>
    #include <String.au3>

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

    Dim $aRecords, $days[10][8], $zwiscen[8]

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

    $x = 0
    $file = FileOpen("c:\EURNOK 5min.csv", 0)

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

    $CountLines = _FileCountLines("c:\EURNOK 5min.csv")

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

    ReDim $days[$CountLines][8]

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

    Do
    $line = FileReadLine($file)
    $zwiscen = StringSplit($line, ";")

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

    $days[$x][0] = $zwiscen[0]
    $days[$x][1] = $zwiscen[1]
    $days[$x][2] = $zwiscen[2]
    $days[$x][3] = $zwiscen[3]
    $days[$x][4] = $zwiscen[4]
    $days[$x][5] = $zwiscen[5]
    $days[$x][6] = $zwiscen[6]
    $days[$x][7] = $zwiscen[7]
    $days[$x][8] = $zwiscen[8]

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

    $x = $x + 1
    Until @error = -1

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

    MsgBox(0, "titel", $days[258][5])

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


    Vielen Dank für die hilfe im voraus.

    bernd670: autoit-tags eingefügt!

    Einmal editiert, zuletzt von doc (23. Mai 2007 um 00:43)

    • Offizieller Beitrag

    Hallo!

    Du hast ein paar Fehler im Code!

    1. Dim $days[10][8] erzeugt ein Array mit 10x8 Feldern, die Nummerierung beginnt immer bei 0, also für die 2. Dimension 0 - 7. In der Schleife weißt Du aber Werte von 0 - 8 zu.

    2. Until @error = -1 ist zwas Syntaktisch richtig, allerdings enthält zu diesem Zeitpunkt @error den Fehlerstatus von StringSplit und nicht mehr den von FileReadLine!

    3 Am Ende greifst Du mit MsgBox(0, "titel", $days[258][5]) einfach auf ein Element zu von dem Du gar nicht wissen kannst ob es existiert!

    Ich habs mal etwas umgeschrieben:

    [autoit]

    #include <Array.au3>
    #include <File.au3>
    #include <String.au3>

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

    Dim $days[1][7], $zwischen

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

    $file = FileOpen("c:\EURNOK 5min.csv", 0)
    If @error = -1 Then
    MsgBox(0,"Fehler", "Fehler beim öffnen!")
    Exit
    EndIf

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

    $CountLines = _FileCountLines("c:\EURNOK 5min.csv")

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

    ReDim $days[$CountLines][7]

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

    For $x = 0 To $CountLines -1
    $line = FileReadLine($file)
    If @error <> 0 Then
    MsgBox(0,"Fehler", "Fehler beim lesen!")
    ExitLoop
    EndIf

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

    ConsoleWrite($line & @CRLF) ; gelesene Zeile zur Kontrolle ausgeben

    $zwischen = StringSplit($line, ";") ; $zwischen[0] enthält die Anzahl der Elemente (sollte immer 7 sein)

    for $i = 1 To $zwischen[0]
    $days[$x][$i-1] = $zwischen[$i]
    Next
    Next

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

    MsgBox(0, "titel", $days[$CountLines - 1][5])

    [/autoit]
  • Hab wieder mal was dazugelernt.

    Der Code Funktioniert wunderbar.

    Vielen Dank für die Hilfe

    MFG