Nicht optimiert, grundsätzlich aber funktionabel... falls die Routinen im CSV-Editor den @autoBert genannt hat das nicht können...
Brauchte sowas in der Art mal bei einem anderen Projekt... vielleicht hilft es dir ja ![]()
Der Funktion wirfst du die einzelnen Zeilen der Datei hin und bekommst damit dann die einzelnen CSV-Felder in einem 1-basierten Array zurück.
AutoIt
$sTEST = '"AHI_";;;;"Apnoe-Hypopnoe-Index";;;;;;;;;"";"Apnoe-Hypopnoe-Index $m1\c:FF\____$m0\c:-\/Stunde [normal: >5; Störungen: „mild“: AHI 5-15,\r„moderat“: AHI 15-30, schwer“: AHI > 30/Stunde nach der Amerikanischen Gesellschaft für Schlafmedizin (AASM)].$m0";"";"";"";"";"";"GKIRSCH";FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;"";FALSE;""'
$aTest = _ProcessLine($sTEST)
Func _ProcessLine($sLine)
Local $fInString = False
Local $sElement = ""
Local $aOutput[1] = [0]
For $i = 1 To StringLen($sLine)
$sTarget = StringLeft(StringTrimLeft($sLine, $i-1), 1)
If $sTarget = '"' And $fInString = False Then
$fInString = True
$sElement &= $sTarget
ContinueLoop
EndIf
If $sTarget = '"' And $fInString = True Then
$fInString = False
$sElement &= $sTarget
ContinueLoop
EndIf
If $sTarget = ';' And $fInString = False Then
ReDim $aOutput[UBound($aOutput)+1]
$aOutput[UBound($aOutput)-1] = $sElement
$sElement = ""
ContinueLoop
EndIf
If $sTarget = ';' And $fInString = True Then
$sElement &= $sTarget
ContinueLoop
EndIf
$sElement &= $sTarget
Next
$aOutput[0] = UBound($aOutput) - 1
Return $aOutput
EndFunc
Alles anzeigen