Hi,
bin ein bischen ein Anfänger
Ich komme nicht ganz klar mit einer alten erklärung die ich hier vorfand.
Folgendes :
Ich muss aus einer Datei die unser Inventar wiedergibt, dieses Inventar in eine neue Software eingeben.
Leider kann ich diese nicht so richtig Importieren.
Also heist es von Hand einpflegen.
Die Datei sieht so aus, kleiner auszug daraus.
Jetzt würde ich diese gerne zeilenweise abarbeiten und die mit ";" getrennten bereiche in Variablen an das Programm weitergeben.
Nur komme ich mit den Mehrdimensionalen Arrays nun gar nicht klar.
Habe mir das Beispiel https://autoit.de/index.php?page=Thread&postID=23289 hier mal zu gemüte geführt.
Dort der Beitrag von Xeno bringt mir zwar die ganze zeile, aber nicht die einzelnen werte.
Und mit der Seperator erklärung von Bugfix bin ich ein wenig überfordert
Das Beispiel von Xeno :
[autoit]
#include<File.au3>
CSVlesen("c:\Downloads\AutoIt-Skripte\Entwicklung\ForumTests\20070720 Planung SONAR 2007.csv")
Func CSVlesen($file) ;Liest den Inhalt der übegebebenen CSV-Datei in ein zweidimensionales Array und gibt dieses zurück (erstes Element enthält Anzahl Zeilen)
Local $CountLines = _FileCountLines($file)
Local $zeilen[$CountLines+1]
Local $zeile
$zeilen[0] = $CountLines
$csv = FileOpen($file, 0)
For $i = 1 To $CountLines
$zeile = FileReadLine($csv, $i)
If @error = -1 Then
ExitLoop
EndIf
MsgBox(64, "Test", "Inhalt: " & $zeile) ;hier wird die ganze Zeile korrekt ausgegeben.
$zeilen[$i] = StringSplit($zeile, ";")
MsgBox(64, "Test", "Inhalt: " & $zeilen[$i]) ;ist scheinbar leer
;MsgBox(64, "Test", "Inhalt: " & $zeilen[$i][0]) ;erzeugt Fehlermeldung!
Next
FileClose($csv)
Return $zeilen
EndFunc
Bekomme es damit leider nicht hin.
Kann mir da jemand ein kleines Beispiel zusammen zimmern ?
Vielen dank im voraus.
MfG
Edit :
Sorry doch zu einem verwertbaren ergebnis gekommen.
Func CSVlesen($file) ;Liest den Inhalt der übegebebenen CSV-Datei in ein zweidimensionales Array und gibt dieses zurück (erstes Element enthält Anzahl Zeilen)
Local $CountLines = _FileCountLines($file)
Local $zeilen[$CountLines+1]
Local $zeile
$zeilen[0] = $CountLines
$csv = FileOpen($file, 0)
For $i = 1 To $CountLines
$zeile = FileReadLine($csv, $i)
If @error = -1 Then
ExitLoop
EndIf
MsgBox(64, "Test", "Inhalt: " & $zeile) ;hier wird die ganze Zeile korrekt ausgegeben.
$zeilen = StringSplit($zeile, ";")
MsgBox(64, "Test", "Inhalt: " & $zeilen[1]) ;ist scheinbar leer
MsgBox(64, "Test", "Inhalt: " & $zeilen[2]) ;erzeugt Fehlermeldung!
MsgBox(64, "Test", "Inhalt: " & $zeilen[3]) ;erzeugt Fehlermeldung!
Next
FileClose($csv)
Return $zeilen
EndFunc
Wenn ich statt $zeilen[$i] nur $zeilen nehme habe ich ja schon das gewünschte ergebnis.