Naja, um die Zeilenumbrüche zu korrigieren, würde ich an deiner Stelle von hinten das Array durchgehen und folgendes in jeder Zeile machen:
- Prüfen ob Stringsplit mit dem Delimiter ; die erwartete Anzahl zurück gibt
- wenn nicht: Diese Zeile an die vorherige incl. einem @CRLF (grade unsicher ob das geht, sonst Leerzeichen verwenden) davor hinzufügen. Danach diese Zeile löschen
- wenn ja: nächste Zeile
- Am Ende wieder prüfen ob das Array nun passt
Edit: Also quasi so (ungeprüft) :
Edit2: Den Trenner mal mit eingebaut, das er übergeben werden muss, um flexibler zu sein.
AutoIt
Opt('MustDeclareVars', 1)
#include <File.au3>
#include <Array.au3>
$csv_array_0 = Rework_Array($csv_array_0, '";"', 27, $STR_ENTIRESPLIT) ;27 sind die Anzahl an ";" die du erwarten würdest, bitte korrigieren falls ich mich verzählt habe
_ArrayDisplay($csv_array_0)
$csv_array_1 = Rework_Array($csv_array_1, '";"', 27, $STR_ENTIRESPLIT)
_ArrayDisplay($csv_array_1)
Func Rework_Array($aArray, $Delimiter, $DelimiterCount, $Flag)
For $Row = $aArray[0] to 1 Step -1
If StringSplit($aArray[$Row], $Delimiter, $Flag)[0] <> ($DelimiterCount + 1) Then
$aArray[$Row - 1] &= $aArray[$Row]
_ArrayDelete($aArray, $Row)
EndIf
Next
$aArray[0] = Ubound($aArray) - 1
Return $aArray
EndFunc
Alles anzeigen