;=============================================================================== ; Function Name: _StringSplit_ByCount($s_String, $i_Count [, $i_FromEnd=0 [, $i_RTL=0]]) ; Description: Splitten eines Strings nach Anzahl Zeichen ; Parameter(s): $s_String der zu splittende String ; $i_Count Zeichenzahl nach der zu splitten ist ; $i_FromEnd Splitten am Ende beginnen (Standard 0 - vom Anfang) ; $i_RTL 1 - String RightToLeft zurückgeben (Standard 0 - LTR) ; Return Value(s): Erfolg - Array mit den Splitergebnissen ; Fehler - Leerstring ; set @error: 1 (String zu kurz) ; 2 ($iCount größer Stringlänge) ; 3 (RTL fehlgeschlagen) ; Author(s): BugFix (bugfix@autoit.de) ; RTL is _StringRevers function ;=============================================================================== Func _StringSplit_ByCount($s_String, $i_Count, $i_FromEnd=0, $i_RTL=0) If StringLen($s_String) < 2 Or $i_Count < 1 Then Return SetError(1,0,"") If $i_Count > StringLen($s_String) Then Return SetError(2,0,"") If $i_FromEnd <> 0 Then $i_FromEnd = 1 If $i_RTL <> 0 Then $i_RTL = 1 Local $a_Tmp[Ceiling(StringLen($s_String)/$i_Count)] If $i_FromEnd Then For $i = 0 To UBound($a_Tmp) -1 $a_Tmp[$i] = StringRight($s_String, $i_Count) $s_String = StringTrimRight($s_String, $i_Count) Next Else $a_Tmp = StringRegExp($s_String, '.{1,' & $i_Count & '}', 3) EndIf If $i_RTL Then For $i = 0 To UBound($a_Tmp) -1 Local $i_len = StringLen($a_Tmp[$i]) Local $t_chars = DllStructCreate("char[" & $i_len + 1 & "]") DllStructSetData($t_chars, 1, $a_Tmp[$i]) Local $a_rev = DllCall("msvcrt.dll", "ptr:cdecl", "_strrev", "ptr", DllStructGetPtr($t_chars)) If @error Or $a_rev[0] = 0 Then Return SetError(3,0,"") $a_Tmp[$i] = DllStructGetData($t_chars, 1) Next EndIf Return $a_Tmp EndFunc ;==>_StringSplit_ByCount