Hallo,
ich benutzte diese Funktion zum Arraysplit.
Allerdings benötigt sie sehr viel Zeit. Für 3000 Zeilen (aus einem 1D Array werden ~55 Reihen 2D Array erstellt) ca. 2,5 Minuten...
Kann man den Split noch beschleunigen?
@@ Debug(618) : _StringSplit2D Start!: / Zeit:21:33:08
@@ Debug(644) : _StringSplit2D END!: / Zeit:21:35:29
AutoIt
Func _StringSplit2D(ByRef $sString, $sDelim = "|", $sDelim2 = ";") ; splittet auch ARRAYS
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : _StringSplit2D Start!: ' & ' / Zeit:' & _NowTime() & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
If IsString($sString) Then
$aTmp = StringSplit($sString, $sDelim, 2)
ElseIf IsArray($sString) Then
If UBound($sString, 0) > 1 Then Return SetError(1)
$aTmp = $sString
Else
Return SetError(1)
EndIf
Local $iStart = 0
If $aTmp[0] = UBound($aTmp) - 1 Then $iStart = 1
Local $aRet[1][1]
For $i = $iStart To UBound($aTmp) - 1
$aSplit = StringSplit($aTmp[$i], $sDelim2, 2)
If $i = UBound($aRet) - 1 Then
ReDim $aRet[UBound($aTmp) + 1][UBound($aRet, 2)]
EndIf
For $x = 0 To UBound($aSplit) - 1
If $x = UBound($aRet, 2) - 1 Then
ReDim $aRet[UBound($aRet)][UBound($aSplit)]
EndIf
$aRet[$i + 1][$x] = $aSplit[$x]
Next
Next
;~ $aRet[0][0] = UBound($aRet) - 1
;~ $aRet[0][1] = UBound($aRet, 2)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : _StringSplit2D END!: ' & ' / Zeit:' & _NowTime() & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
Return $aRet
EndFunc ;==>_StringSplit2D
Alles anzeigen
Danke und Gruß,
Horphi