automatische erkennung offener tags

  • Hallo liebe Gemeinde,

    mein aktuelles Script:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEX.au3>
    #include <GuiToolTip.au3>
    #include <GuiEdit.au3>
    #include <GuiComboBox.au3>
    #include <GuiConstants.au3>
    #include <EditConstants.au3>
    #include <Constants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>
    #include <ListboxConstants.au3>
    #include <ButtonConstants.au3>
    #include <StaticConstants.au3>
    #include <IE.au3>
    #Include <Misc.au3>
    #Include <Array.au3>
    #include <INet.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Opt("GUIDataSeparatorChar", "#")

    [/autoit] [autoit][/autoit] [autoit]

    $msg = GUICreate("Party-Screen.de - SpeedAnswer©", 440, 370)

    [/autoit] [autoit][/autoit] [autoit]

    $b = GUICtrlCreateButton("", 20, 110, 25, 25)
    $i = GUICtrlCreateButton("", 46, 110, 25, 25)
    $u = GUICtrlCreateButton("", 72, 110, 25, 25)
    $d = GUICtrlCreateButton("[-]", 98, 110, 25, 25)

    [/autoit] [autoit][/autoit] [autoit]

    $schrift = GUICtrlCreateCombo("Schriftfarbe", 126, 112, 100, 25)
    $color = GUICtrlSetData(-1, "skyblue#royalblue#blue#darkblue#orange#orangered#crimson#red#firebrick#darkred#green#limegreen#seagreen#deeppink#tomato#coral#purple#indigo#burlywood#sandybrown#sienna#chocolate#teal#silver", "")

    [/autoit] [autoit][/autoit] [autoit]

    $http = GUICtrlCreateButton("http://", 20, 136, 51, 25)
    $at = GUICtrlCreateButton("@", 72, 136, 25, 25)
    $img = GUICtrlCreateButton("IMG", 98, 136, 51, 25)
    $code = GUICtrlCreateButton("Code", 150, 136, 51, 25)
    $quote = GUICtrlCreateButton("Quote", 202, 136, 51, 25)
    $video = GUICtrlCreateButton("Video", 254, 136, 51, 25)
    $aktuTag = GUICtrlCreateButton("x", 20, 162, 35, 25)
    GUICtrlSetFont(-1, 11, 600, 0, "MS Sans Serif")
    $allTag = GUICtrlCreateButton("x", 202, 162, 35, 25)
    GUICtrlSetFont(-1, 11, 600, 0, "MS Sans Serif")
    GUICtrlCreateLabel("Aktuelles Tag schließen", 58, 168, Default, 15)
    GUICtrlCreateLabel("Alle Tags schließen", 240, 168, Default, 15)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $text = GUICtrlCreateEdit("", 20, 190, 400, 139, $ES_WANTRETURN)
    $ok = GUICtrlCreateButton("Eintragen", 20, 331, 90, 25)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    main()

    [/autoit] [autoit][/autoit] [autoit]

    Func main()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $schrift
    $textcolorfenster = GUICreate("Texteingabe für Färbung:", 350, 120)
    GUICtrlCreateLabel("Geben sie den gefärbten Text ein.", 30, 20)
    $textcolor = GUICtrlCreateInput("", 30, 45, 290, 23)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $OKcolor = GUICtrlCreateButton("OK", 90, 80, 75, 25)
    $AbbrechenColor = GUICtrlCreateButton("Abbrechen", 175, 80, 75, 25)
    GUISetState(@SW_SHOW, $textcolorfenster)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $textcolorfenster = GUIGetMsg()
    Switch $textcolorfenster
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    ExitLoop
    Case $OKcolor
    $schrift_OK = GUICtrlRead($schrift)
    GUICtrlSetData($text, GUICtrlread($text) & '[color="' & $schrift_OK & '"]' & GUICtrlread($textcolor) & '[/color]')
    GUISetState(@SW_HIDE)
    ExitLoop
    Case $AbbrechenColor
    GUISetState(@SW_HIDE)
    ExitLoop
    EndSwitch
    WEnd
    Case $b
    GUICtrlSetData($text, GUICtrlread($text) & "[b]")
    Case $i
    GUICtrlSetData($text, GUICtrlread($text) & "[i]")
    Case $u
    GUICtrlSetData($text, GUICtrlread($text) & "[u]")
    Case $d
    GUICtrlSetData($text, GUICtrlread($text) & "[-]")

    [/autoit] [autoit][/autoit] [autoit]

    Case $http
    global $text_http_fenster = GUICreate("URL des Links:", 350, 120)
    GUICtrlCreateLabel("Geben sie bitte die URL des Links ein.", 30, 20)
    $text_url = GUICtrlCreateInput("", 30, 45, 290, 23)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $OK_url = GUICtrlCreateButton("OK", 90, 80, 75, 25)
    $Abbrechen_URL = GUICtrlCreateButton("Abbrechen", 175, 80, 75, 25)
    GUISetState(@SW_SHOW, $text_http_fenster)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $text_http_fenster = GUIGetMsg()
    Switch $text_http_fenster
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    ExitLoop
    Case $OK_url
    GUISetState(@SW_HIDE)
    global $text_http_fenster_2 = GUICreate("Name des Links:", 350, 120)
    GUICtrlCreateLabel("Geben sie bitte den Namen des Links ein.", 30, 20)
    $text_url_2 = GUICtrlCreateInput("", 30, 45, 290, 23)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $OK_url_2 = GUICtrlCreateButton("OK", 90, 80, 75, 25)
    $Abbrechen_URL_2 = GUICtrlCreateButton("Abbrechen", 175, 80, 75, 25)
    GUISetState(@SW_SHOW, $text_http_fenster_2)

    [/autoit] [autoit][/autoit] [autoit]

    While 2
    $text_http_fenster_2 = GUIGetMsg()
    Switch $text_http_fenster_2
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    ExitLoop "2"
    Case $OK_url_2
    GUICtrlSetData($text, GUICtrlread($text) & '' & GUICtrlread($text_url_2) & '')
    GUISetState(@SW_HIDE)
    ExitLoop "2"
    Case $Abbrechen_URL_2
    GUISetState(@SW_HIDE)
    ExitLoop "2"
    EndSwitch
    WEnd
    Case $Abbrechen_URL
    GUISetState(@SW_HIDE)
    ExitLoop
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Case $at
    global $text_at_fenster = GUICreate("Eingabe der Mailadresse:", 350, 120)
    GUICtrlCreateLabel("Geben sie bitte die Mailadresse ein.", 30, 20)
    $text_at = GUICtrlCreateInput("", 30, 45, 290, 23)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $OK_at = GUICtrlCreateButton("OK", 90, 80, 75, 25)
    $Abbrechen_at = GUICtrlCreateButton("Abbrechen", 175, 80, 75, 25)
    GUISetState(@SW_SHOW, $text_at_fenster)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $text_at_fenster = GUIGetMsg()
    Switch $text_at_fenster
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    ExitLoop
    Case $OK_at
    GUISetState(@SW_HIDE)
    global $text_at_fenster_2 = GUICreate("Name der Mailadresse:", 350, 120)
    GUICtrlCreateLabel("Geben sie bitte den Namen der Mailadresse ein.", 30, 20)
    $text_at_2 = GUICtrlCreateInput("", 30, 45, 290, 23)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $OK_at_2 = GUICtrlCreateButton("OK", 90, 80, 75, 25)
    $Abbrechen_at_2 = GUICtrlCreateButton("Abbrechen", 175, 80, 75, 25)
    GUISetState(@SW_SHOW, $text_at_fenster_2)

    [/autoit] [autoit][/autoit] [autoit]

    While 2
    $text_at_fenster_2 = GUIGetMsg()
    Switch $text_at_fenster_2
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    ExitLoop "2"
    Case $OK_at_2
    GUICtrlSetData($text, GUICtrlread($text) & '[mail="' & GUICtrlread($text_at) & '"]' & GUICtrlread($text_at_2) & '[/mail]')
    GUISetState(@SW_HIDE)
    ExitLoop "2"
    Case $Abbrechen_at_2
    GUISetState(@SW_HIDE)
    ExitLoop "2"
    EndSwitch
    WEnd
    Case $Abbrechen_at
    GUISetState(@SW_HIDE)
    ExitLoop
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Case $img
    global $text_img_fenster = GUICreate("URL des Bildes:", 350, 120)
    GUICtrlCreateLabel("Geben sie bitte die URL des Bildes ein.", 30, 20)
    $text_img = GUICtrlCreateInput("", 30, 45, 290, 23)
    GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
    $OK_img = GUICtrlCreateButton("OK", 90, 80, 75, 25)
    $Abbrechen_img = GUICtrlCreateButton("Abbrechen", 175, 80, 75, 25)
    GUISetState(@SW_SHOW, $text_img_fenster)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $text_img_fenster = GUIGetMsg()
    Switch $text_img_fenster
    Case $GUI_EVENT_CLOSE
    GUISetState(@SW_HIDE)
    ExitLoop
    Case $OK_img
    GUICtrlSetData($text, GUICtrlread($text) & '')
    GUISetState(@SW_HIDE)
    ExitLoop
    Case $Abbrechen_img
    GUISetState(@SW_HIDE)
    ExitLoop
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Case $code
    GUICtrlSetData($text, GUICtrlread($text) & "

    [/autoit] [autoit]
    Code
    ")		Case $quote			GUICtrlSetData($text, GUICtrlread($text) & "[quote]")		Case $video			global $text_video_fenster = GUICreate("URL des Videos:", 600, 120)			GUICtrlCreateLabel("Geben sie die Adresse des Videos an. (Verfügbar für www.you-tube.com, www.myvideo.de und www.clipfish.de)", 30, 20)			$text_video = GUICtrlCreateInput("", 30, 45, 540, 23)			GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")			$OK_video = GUICtrlCreateButton("OK", 220, 80, 75, 25)			$Abbrechen_video = GUICtrlCreateButton("Abbrechen", 300, 80, 75, 25)			GUISetState(@SW_SHOW, $text_video_fenster)			While 1				$text_video_fenster = GUIGetMsg()				Switch $text_video_fenster					Case $GUI_EVENT_CLOSE						GUISetState(@SW_HIDE)						ExitLoop					Case $OK_video						GUICtrlSetData($text, GUICtrlread($text) & '[video]' & GUICtrlread($text_video) & '[/video]')						GUISetState(@SW_HIDE)						ExitLoop					Case $Abbrechen_video						GUISetState(@SW_HIDE)						ExitLoop				EndSwitch			WEnd		Case $aktuTag			;GUICtrlSetData($text, GUICtrlread($text) & "")			MsgBox(64, "Noch außer Funktion", "Die Funktion ist noch nicht im Script eingebunden." & @CRLF & "Ich bitte Sie um ein wenig gedult," & @CRLF &  "ein Update wird so schnell es geht folgen.")		Case $allTag			$text_for_allTag = GUICtrlRead($text)			$exist_b = StringRegExp($text_for_allTag, '\[b\]', 3)			For $x = 0 to UBound($exist_b)-1			GUICtrlSetData($text, GUICtrlread($text) & "[/b]")			Next			$exist_i = StringRegExp($text_for_allTag, '\[i\]', 3)			For $x = 0 to UBound($exist_i)-1			GUICtrlSetData($text, GUICtrlread($text) & "[/i]")			Next			$exist_u = StringRegExp($text_for_allTag, '\[u\]', 3)			For $x = 0 to UBound($exist_u)-1			GUICtrlSetData($text, GUICtrlread($text) & "[/u]")			Next			$exist_d = StringRegExp($text_for_allTag, '\[-\]', 3)			For $x = 0 to UBound($exist_d)-1			GUICtrlSetData($text, GUICtrlread($text) & "[/-]")			Next			$exist_code = StringRegExp($text_for_allTag, '\[code\]', 3)			For $x = 0 to UBound($exist_code)-1			GUICtrlSetData($text, GUICtrlread($text) & "

    [autoit]")
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $exist_quote = StringRegExp($text_for_allTag, '\[quote\]', 3)
    For $x = 0 to UBound($exist_quote)-1
    GUICtrlSetData($text, GUICtrlread($text) & "[/quote]")
    Next

    [/autoit] [autoit][/autoit] [autoit]

    case $ok

    [/autoit] [autoit][/autoit] [autoit]

    GUIctrlSetState($ok, $GUI_DISABLE)
    GUIctrlSetState($text, $GUI_DISABLE)
    ;bla bla
    exit
    EndSwitch
    WEnd
    EndFunc

    [/autoit][/autoit]

    mein Problem ist nun das das Script zwar mittlerweile sogar die Anzahl der offenen Tags feststellt und dann nach drücken eines buttons alle entsprechenden tags zum schießen einsetzt jedoch ein erneutes drücken des Buttons macht das selbe wieder (zB: in der edit box steht ["b"] durch den Button "Alle Tags schließen" wird ein ["/b"] eingefügt

    Fazit:
    das Script muss nicht nur feststellen wie viele "Eröffnungstags" sich in der edit befinden, sondern auch wie viele von diesen schon geschlossen wurden

    ich hoffe mein Problem wurde erkannt ?(
    wie kann ich das realisieren, oder würdet ihr es ganz anders machen?

    3 Mal editiert, zuletzt von Inferior (11. Juli 2010 um 22:14)

  • Meinst du sowas?

    [autoit][/autoit][autoit][/autoit][autoit]

    $sText = "[b]das hier wird fett und unterstrichen, aber dann gibt es auch noch kursive Schrift!"
    $aAnzahl = _CountTags($sText,"[b]") ; [b] Tags zählen

    [/autoit][autoit][/autoit][autoit]

    Select
    Case $aAnzahl[0] = $aAnzahl[1]
    MsgBox(0,"","Alle Tags geschlossen!")
    Case $aAnzahl[0] < $aAnzahl[1]
    MsgBox(0,"","Zu viele schließende Tags!")
    Case $aAnzahl[0] > $aAnzahl[1]
    MsgBox(0,"","Zu viele öffnende Tags!")
    EndSelect

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _CountTags($sString, $sTag)
    Local $aRet[2]
    StringReplace($sString, $sTag, "")
    $aRet[0] = @extended
    StringReplace($sString, "[/" & StringMid($sTag, 2), "")
    $aRet[1] = @extended
    Return $aRet
    EndFunc ;==>_CountTags

    [/autoit]
  • danke SEuBo

    hab mir das mal gründlich angesehn und damit schon mal rumexperimentiert
    also die erkennung wie viele tags geöffnet wurden / wie viele bereits geschlossen wurden funktioniert
    damit lässt sich auch ganz feststellen wie viele tags noch nicht geschlossen wurde (offene - geschlossene)

    jedoch weiß ich nicht wie ich jetzt sagen kann
    füg bitte zB 2x ["/b"] ein
    wenn 3x ["b"] und nur 1x ["/b"] in der edit ist

    hier mein vereinfachtes script:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEX.au3>
    #include <EditConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $msg = GUICreate("test", 250, 180)
    $b = GUICtrlCreateButton("", 55, 10, 25, 25)
    $b_end = GUICtrlCreateButton("
    ", 130, 10, 25, 25)
    $allTag = GUICtrlCreateButton("x", 20, 55, 35, 25)
    GUICtrlCreateLabel("Alle Tags schließen", 58, 61, Default, 15)
    GUICtrlCreateLabel("FETT", 84, 15, Default, 15)
    GUICtrlCreateLabel("FETT End", 160, 15, Default, 15)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $text = GUICtrlCreateEdit("", 20, 85, 210, 75, $ES_WANTRETURN)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    main()

    [/autoit] [autoit][/autoit] [autoit]

    Func main()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $b
    GUICtrlSetData($text, GUICtrlread($text) & "")
    Case $b_end
    GUICtrlSetData($text, GUICtrlread($text) & "
    ")
    Case $allTag
    $text_b = GUICtrlRead($text)
    $Anzahl_b = _CountTags($text_b,"[b]")
    if $Anzahl_b[0] > $Anzahl_b[1] then $fehlende_b = $Anzahl_b[0] - $Anzahl_b[1]
    if $Anzahl_b[0] > $Anzahl_b[1] then MsgBox(0, "Fehler", "Es wurden " & $fehlende_b & " Tags noch nicht geschlossen!")
    EndSwitch
    WEnd
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _CountTags($sString, $sTag)
    Local $aRet[2]
    StringReplace($sString, $sTag, "")
    $aRet[0] = @extended
    StringReplace($sString, "[/" & StringMid($sTag, 2), "")
    $aRet[1] = @extended
    Return $aRet
    EndFunc ;==>_CountTags

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEX.au3>
    #include <EditConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $msg = GUICreate("test", 250, 180)
    $b = GUICtrlCreateButton("", 55, 10, 25, 25)
    $b_end = GUICtrlCreateButton("
    ", 130, 10, 25, 25)
    $allTag = GUICtrlCreateButton("x", 20, 55, 35, 25)
    GUICtrlCreateLabel("Alle Tags schließen", 58, 61, Default, 15)
    GUICtrlCreateLabel("FETT", 84, 15, Default, 15)
    GUICtrlCreateLabel("FETT End", 160, 15, Default, 15)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $text = GUICtrlCreateEdit("", 20, 85, 210, 75, $ES_WANTRETURN)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    main()

    [/autoit] [autoit][/autoit] [autoit]

    Func main()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $b
    GUICtrlSetData($text, GUICtrlRead($text) & "")
    Case $b_end
    GUICtrlSetData($text, GUICtrlRead($text) & "
    ")
    Case $allTag
    $text_b = GUICtrlRead($text)
    $Anzahl_b = _CountTags($text_b, "")
    $iOffen_b = $Anzahl_b[0] - $Anzahl_b[1]; Alternativ geht auch $iOffen_b = @extended
    Select
    Case $iOffen_b > 0
    MsgBox(0, "", $iOffen_b & " Tags zu viel geöffnet")
    For $i = 1 To $iOffen_b
    GUICtrlSetData($text, GUICtrlRead($text) & "
    ")
    Next
    Case $iOffen_b < 0
    MsgBox(0, "", $iOffen_b & " Tags zu wenig geöffnet")
    For $i = -1 To $iOffen_b Step -1
    GUICtrlSetData($text, "[b]" & GUICtrlRead($text))
    Next
    EndSelect
    EndSwitch
    WEnd
    EndFunc ;==>main

    [/autoit] [autoit][/autoit] [autoit]

    Func _CountTags($sString, $sTag)
    Local $aRet[2]
    StringReplace($sString, $sTag, "")
    $aRet[0] = @extended
    StringReplace($sString, "[/" & StringMid($sTag, 2), "")
    $aRet[1] = @extended
    Return SetError(0, $aRet[0] - $aRet[1], $aRet)
    EndFunc ;==>_CountTags

    [/autoit]


    Einfach mit ner For-Next Schleife ^^

  • super SEuBo,

    habs soweit umgeschrieben für mein script.. jetzt läuft es 8)
    hatte das mit der for schleife auch schon probiert.. ist aber an der umsetzung gescheitert..

    weißt du / oder natürlich auch irgend jemand anders vllt noch wie ich jetzt einen button einbinden kann,
    der mir nur den letzten Tag schließt.. so wie es im moment mir der zählfunktion für alle tags schließen gelöst ist geht das ja kaum...

    fazit:
    in der edit box steht:
    ["b"]["i"]das ist ein Text der fett und kursiv ist
    nach drücken des buttons "aktuellen tag schließen" sollte nur ["i"] geschlossen werden

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEX.au3>
    #include <EditConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $msg = GUICreate("test", 330, 180)
    $b = GUICtrlCreateButton("", 20, 10, 25, 25)
    $i = GUICtrlCreateButton("", 120, 10, 25, 25)
    $aktuTag = GUICtrlCreateButton("x", 20, 55, 35, 25)
    GUICtrlCreateLabel("Aktuelles Tag schließen", 58, 61, Default, 15)
    $allTag = GUICtrlCreateButton("x", 178, 55, 35, 25)
    GUICtrlCreateLabel("Alle Tags schließen", 215, 61, Default, 15)
    GUICtrlCreateLabel("FETT", 50, 15, Default, 15)
    GUICtrlCreateLabel("KURSIV", 150, 15, Default, 15)

    [/autoit] [autoit][/autoit] [autoit]

    Dim $text = GUICtrlCreateEdit("", 20, 85, 290, 75, $ES_WANTRETURN)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    main()

    [/autoit] [autoit][/autoit] [autoit]

    Func main()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $b
    GUICtrlSetData($text, GUICtrlRead($text) & "[b]")
    Case $i
    GUICtrlSetData($text, GUICtrlRead($text) & "[i]")
    Case $allTag
    $text_aktuTag = GUICtrlRead($text)
    $Anzahl_b = _CountTags($text_aktuTag, "[b]")
    $open_b = $Anzahl_b[0] - $Anzahl_b[1]
    Select
    Case $open_b > 0
    For $x = 1 To $open_b
    GUICtrlSetData($text, GUICtrlRead($text) & "
    ")
    Next
    EndSelect

    [/autoit] [autoit][/autoit] [autoit]

    $Anzahl_i = _CountTags($text_aktuTag, "[i]")
    $open_i = $Anzahl_i[0] - $Anzahl_i[1]
    Select
    Case $open_i > 0
    For $x = 1 To $open_i
    GUICtrlSetData($text, GUICtrlRead($text) & "
    ")
    Next
    EndSelect
    EndSwitch
    WEnd
    EndFunc ;==>main

    [/autoit] [autoit][/autoit] [autoit]

    Func _CountTags($sString, $sTag)
    Local $aRet[2]
    StringReplace($sString, $sTag, "")
    $aRet[0] = @extended
    StringReplace($sString, "[/" & StringMid($sTag, 2), "")
    $aRet[1] = @extended
    Return SetError(0, $aRet[0] - $aRet[1], $aRet)
    EndFunc ;==>_CountTags

    [/autoit]

    Einmal editiert, zuletzt von Inferior (11. Juli 2010 um 17:49)

  • Das würd ich mit StringRegExpReplace lösen:

    [autoit]

    ;...

    [/autoit] [autoit][/autoit] [autoit]

    Case $aktuTag
    GUICtrlSetData($text, StringRegExpReplace(GUICtrlRead($text),"(?s)(.+\[)([^]]+])(.+)","\1\2\3[/\2"))

    [/autoit] [autoit][/autoit] [autoit]

    ;....

    [/autoit]

    danke an sich ist es das was ich suche.. hatte mich erst ein wenig mit StringRegExp und Co. beschäftigt...
    allredings birgt diese lösung 2 fehler wenn nach der tag kein text folgt, dann erkennt er es nicht.. gibt man danach einen willkürlichen text ein so sieht er den zuvor eingegebenen tag als letzten an und schließt ihn
    2. fehler ist das wenn man die taste erneut drücht füht er ständig ein schließendes tag ein mit immer einem "/" mehr ein O.o

  • Hoi,

    ist es so besser?

    [autoit]


    ;..
    Case $aktuTag
    GUICtrlSetData($text, StringRegExpReplace(StringRegExpReplace(GUICtrlRead($text),"(?s)(.*\[)([^]]+])(.*)","\1\2\3[/\2"),"\[/{2,}[^]]+]",""))
    ;...

    [/autoit]

    EDIT: Merke grade, dass das immer noch Fehler birgt. Also mit einem einzelnen RegExpReplace ist das nicht möglich (lasse mich da gern eines besseren belehren).
    Ehrlich gesagt fehlen mir jetzt grad etwas die nerven um noch weiter zu basteln. Vllt hat ja jemand anderes ne Idee.

  • SEuBo? ich bin dir sehr dankbar!
    ist sehr sehr viel besser! funktioniert perfekt
    vielen dank nochmal