Deutsch
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 für 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 über Subclassing und NProcs läuft und für 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

end

Anmerkungen und Korrekturen sind, wie immer, willkommen.

1.381 kB
Version:1
Kurzbeschreibung: Programm zum Überprüfen von regulären Ausdrücken
Hochgeladen:01.03.2012
Ladeanzahl215
Herunterladen
 
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


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.613 Betrachtungen

Unbenanntvor 0 min.
H.Brill12.06.2024
Andre Rohland08.09.2018
PETER195618.07.2018
Peter Max Müller05.03.2017
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Nico Madysa (2x)
iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


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