Italia
Anwendungen

Reguläre Ausdrücke testen

 

Nico
Madysa
Hallo, liebe Community!

Anbei ein kleines Programm, mit dem man schnell mit regulären Ausdrücken herumexperimentieren kann.
In dem Feld per die Ausdrücke kann man auch gewohnt alle Escape-Sequenzen benutzen; wenn man also "\n" schreibt, wird dies auch als Zeilenumbruch interpretiert.

Anbei ein leicht abweichender Code; in dem Code habe ich das Zeugs entfernt, mit dem ich auf Änderungen der Fenstergröße reagiere, weil das circa Subclassing und NProcs corre und per einen kleinen Schnipsel wie diesen viel zu weit führt.

Download
KompilierenMarkierenSeparieren
'Sorgt dafür, dass man in muster& auch Escapesequenzen benutzen kann.

proc EscapeBS

    parameters text$
    text$ = Translate$(text$,"\\z","\z")
    text$ = Translate$(text$,"\\a","\a")
    text$ = Translate$(text$,"\\b","\b")
    text$ = Translate$(text$,"\\t","\t")
    text$ = Translate$(text$,"\\f","\f")
    text$ = Translate$(text$,"\\r","\r")
    text$ = Translate$(text$,"\\n","\n")
    text$ = Translate$(text$,"\\q","\q")

    whileloop 0,255

        text$ = Translate$(text$,"\\x"+upper$(Hex$(&loop \ 16)+Hex$(&loop mod 16)),Chr$(&loop))

    EndWhile

    return Translate$(text$,"\\\\","\\")

endproc

'Aktualisiert den Titel

proc BuildTitle

    if GetText$(muster&) <> ""

        WindowTitle "RegEx-Tester: %MatchPos=" + str$(%MatchPos) + "; %MatchLen=" + str$(%MatchLen)

    else

        WindowTitle "RegEx-Tester: Kein Ausdruck!"

    endif

endproc

WindowTitle "RegEx-Tester"
cls
'Error-Level versetzt, weil sonst ständig Warnungen über
'Fehler im RegEx kommen
Set("ErrorLevel",0)
Cls External("User32","GetSysColor",15)
var Input& = Create("MultiEdit",%Hwnd,"Eingabe",0,0,width(%hWnd)\2,height(%hWnd)-20)
var Output& = Create("MultiEdit",%Hwnd,"Ausgabe",width(%hWnd)\2,0,width(%hWnd)\2,height(%hWnd)-20)
var muster& = Create("Edit",%Hwnd,"RegEx-Muster",0,height(%hWnd)-20,width(%hWnd),20)

whilenot Iskey(27)

    waitinput

    ifnot GetFocus(Output&)

        if GetText$(muster&) <> ""

            SetText Output&,Match$(EscapeBS(GetText$(muster&)),GetText$(input&))

        endif

        BuildTitle

    endif

wend
ass=s4 href='./../../function-references/xprofan/end/'>end

Anmerkungen und Korrekturen sind, wie immer, Benvenuto.

1.381 kB
Version:1
Kurzbeschreibung: Programm zum Überprüfen von regulären Ausdrücken
Hochgeladen:01.03.2012
Downloadcounter226
Download
 
01.03.2012  
 



Ich glaube wenn Du in der hWnd-wProc bei wm_eraseBkGnd 1 zurückgibst (return 1) dann flickerts in Deinem Beispiel nicht beim Skalieren. ^^
 
02.03.2012  
 




Nico
Madysa
Dieser spezifische Schnipsel ist sehr stark von deinen Ratschlägen inspiriert und ich gebe bei WM_ERASEBKGND bereits 1 zurück.

Die Subclassproc sieht so aus:
KompilierenMarkierenSeparieren
nproc hWnd.Sub

    parameters wnd&,msg&,wParam&,lParam&
    var ud& = GetWindowLong(wnd&,gwl_userData)

    if msg& = WM_WINDOWPOSCHANGING

        ifnot Long(lParam&,24) & 1'Beachtet SWP_NOSIZE

            var b& = dim(16)
            GetClientRect(%hWnd,b&)
            var a& = BeginDeferWindowPos(3)
            a& = DeferWindowPos(a&,Long(ud&,0),0,\
            0,0,Long(b&,8)\2,Long(b&,12)-20,SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOZORDER)
            a& = DeferWindowPos(a&,Long(ud&,4),0,\
            Long(b&,8)\2,0,Long(b&,8)\2,Long(b&,12)-20,SWP_NOACTIVATE|SWP_NOZORDER)
            a& = DeferWindowPos(a&,Long(ud&,8),0,\
            0,Long(b&,12)-20,Long(b&,8),20,SWP_NOACTIVATE|SWP_NOZORDER)
            EndDeferWindowPos(a&)
            Dispose(b&)

        endif

        return 0

    elseif msg& = WM_GETMINMAXINFO

        Long lParam&,24 = 320,240
        return 0

    elseif msg& = WM_ERASEBKGND

        return 1

    endif

    return CallWindowProc(Long(ud&,nsc_wndproc),wnd&,msg&,wParam&,lParam&)

endproc


Dass dort Verbesserungspotential besteht, erwarte ich geradezu.
 
02.03.2012  
 



Zur Anwendung


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

6.751 Views

Untitledvor 0 min.
H.Brill12.06.2024
Andre Rohland08.09.2018
PETER195618.07.2018
Peter Max Müller05.03.2017
Di più...

Themeninformationen

Dieses Thema hat 2 subscriber:

Nico Madysa (2x)
iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie