Textzeile splitten

  • Hallo ^^
    Da ich im Forum und in der Hilfe nichts weiter zu einem automatischen Zeilenumbruch in einer
    EditBox gefunden habe, musste ich mir dafür selbst ne Funktion schreiben ;)
    Mit automatischen Zeilenumbruch meine ich, dass eine überlange Zeile in mehrere aufgeteilt wird.

    Vielleicht gibt es die Funktion auch schon längst und ich habs bloß übersehen,
    ..
    naja, hier mal meine ;)

    Spoiler anzeigen
    [autoit]


    Func _umbruch($s, $len)
    $uL = StringLen($s)
    Local $uI = 0, $uJ = 1, $uSpecial = 0
    Local $uRet[2]
    $uRet[0] = $s
    Do
    $uSpaceNr = StringRegExp($uRet[0], Chr(32), 4)
    $uSNr = UBound($uSpaceNr) - 1
    Do
    $uI -= 1
    $uSpaceIndex = StringInStr($uRet[0], ' ', 0, $uI)

    If (-1 * $uI) > $uSNr Then
    $uSpaceIndex = $len-1
    $uSpecial = 1
    EndIf

    Until $uSpaceIndex < $len
    $uI = 0

    If $uSpecial = 0 Then
    $uRet[$uJ] = StringLeft($uRet[0], $uSpaceIndex)
    Else
    $uRet[$uJ] = StringLeft($uRet[0], $uSpaceIndex) & '-'
    $uSpecial = 0
    EndIf

    $uRet[0] = StringTrimLeft($uRet[0], $uSpaceIndex)
    $uJ += 1
    ReDim $uRet[$uJ+1]
    Until StringLen($uRet[0]) < $len
    $uRet[$uJ] = $uRet[0]
    $uRet[0] = UBound($uRet)-1
    Return $uRet
    EndFunc ;==>_umbruch

    [/autoit]

    Wobei $s die Zeile Text und $len die gewünschte Länge ist.
    Die Funktion gibt eine Array aus, in der die einzelnen Satzteile stehen,
    nach Möglichkeit an einem {space} gesplittet, ansonsten mit '-'.

    Ich hab sie noch nicht ausgiebig testen können, und man kann sie bestimmt noch
    kürzen und verbessern, aber vll hilft sie ja dem ein oder anderem ;)
    Mir auf jeden Fall

    mfg limette =)

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

    • Offizieller Beitrag

    Hi,

    Spoiler anzeigen
    [autoit]

    ;~ Beispieltext von http://de.wikipedia.org/wiki/AutoIt
    $String = "Die Skripte ermöglichen z. B. das Ausführen von Programmen, das Simulieren von Tastaturanschlägen bzw. Mausklicks. Es können einfache Textfunktionen der Zwischenablage oder auch Windowsfunktionen (wie z. B. minimieren, verstecken, Warten auf/Aktivieren von Fenstern) aufgerufen werden. Seit Version 3 können zudem graphische Benutzeroberflächen mit zahlreichen Controls entworfen werden. Soll es um Registrymanipulationen oder komplexere Schleifen gehen, ist AutoIt 3 inzwischen mit seiner verbesserten Syntax deutlich einfacher zu handhaben als frühere Versionen. Es ist möglich, AutoIt mit anderen Scriptsprachen wie WSH oder Kixtart zu kombinieren (AutoItX)."

    MsgBox(0,"",$String) ; Original-Text
    MsgBox(0,"",_StringInsertLF($String,50)) ; Softbreak nach 50 Zeichen
    MsgBox(0,"",_StringInsertLF($String,50,1)) ; Hardbreak nach 50 Zeichen

    ;===============================================================================
    ;
    ; Description: Fügt @LF in Strings ein
    ; Parameter(s): $strString = String der bearbeitet werden soll
    ; $nCount = Anzahl der Zeichen bevor @LF eingefügt werden soll
    ; (optional) $cBreaking = 0 (default) -> Softbreak (an Wortgrenze)
    ; 1 -> Hardbreak
    ; ist kein Leerzeichen im String enthalten wird hart
    ; umgebrochen
    ; Requirement(s): keine
    ; Return Value(s): String mit @LF
    ; Author(s): bernd670
    ;
    ;===============================================================================
    Func _StringInsertLF($strString,$nCount,$cBreaking = 0)
    Local $strRetString = "", $nPos
    Do
    If Stringlen($strString) > $nCount Then
    $nPos = StringInStr(StringLeft($strString,$nCount + 1)," ",0,-1)
    If ($nPos and $cBreaking = 0) Then
    $strRetString &= StringLeft($strString,$nPos - 1) & @LF
    $strString = StringMid($strString,$nPos + 1)
    Else
    $strRetString &= StringLeft($strString,$nCount) & @LF
    $strString = StringMid($strString,$nCount + 1)
    EndIf
    EndIf
    Until StringLen($strString) < $nCount
    $strRetString &= $strString
    Return $strRetString
    EndFunc

    [/autoit]

    So long,

    Mega

  • Ok,
    Ich wusste doch, dass es sowas schon gegeben haben muss ^^
    Naja, danke,
    mir hats trotzdem geholfen, das selber auszutüfteln ;)
    Schade =)

    limette

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.