Fuente/ Codesnippets | | | | - Página 1 - |
| Jörg Sellmeyer | ¡Hola, Yo habe veces unos pocos Regexpressions zusammengefummelt, con denen Características como Sub, Mul u.s.w automáticamente de el Ver código fuente lejos voluntad puede. Hiermit puede no verschachtelte Funktonen ersetzt y ser auch O y AND bleiben unbehandelt. Trotzdem kann lo una una Menge Trabajos puntuales. KompilierenMarcaSeparaciónDeclare Term$[10,2],Wert$[5]
Declare Edit&,Text&,hFont&,btnLaden&,btnStarten&,btnSpeichern&,Liste&,ListeFertig&
Term$[0,0] = ([Ss][Uu][Bb])+ ?~(
Term$[1,0] = (([Aa][Dd][Dd])+ ?~()
Term$[2,0] = (([Aa][Dd][Dd]~$)+ ?~()
Term$[3,0] = (([Mm][Uu][Ll])+ ?~()
Term$[4,0] = ([Dd][Ii][Vv]+ ?~()
Term$[5,0] = ([Dd][Ii][Vv]&+ ?~()
Term$[6,0] = ([Aa][Nn][Nn]+ ?~()Wem was dazu einfällt...
Term$[7,0] = ([Oo][Rr]+ ?~()
Term$[8,0] = ([Mm][Oo][Vv][Ee][Ll][Ii][Ss][Tt][Tt][Oo]+([Ll][Ii][Ss][Tt]|[Cc][Hh][Oo][Ii][Cc][Ee]|[Ee][Dd][Ii][Tt]) ?~()
Term$[9,0] = (([Ss][Ee][Tt])([Aa][Uu][Tt][Oo][Pp][Aa][Ii][Nn][Tt]|
[Dd][Ee][Cc][Ii][Mm][Aa][Ll][Ss]|
[Nn][Uu][Mm][Ww][Ii][Dd][Tt][Hh]|
[Cc][Hh][Aa][Rr][Ss][Ee][Tt]|
[Ee][Rr][Rr][Oo][Rr][Ll][Ee][Vv][Ee][Ll]|
[Ff][Ii][Ll][Ee][Mm][Oo][Dd][Ee]|
[Tt][Rr][Uu][Ee][Cc][Oo][Ll][Oo][Rr]|
[Ss][Tt][Rr][Ww][Ii][Dd][Tt][Hh])) [0-9]+
Term$[0,1] = -
Term$[1,1] = +
Term$[2,1] = +
Term$[3,1] = *
Term$[4,1] = /
Term$[5,1] = \
Term$[6,1] = &
Term$[7,1] = |
Term$[8,1] = MoveListToHandle(
Wert$[0] = ( ?[0-9]+(~.[0-9]+)? ?)Zahl
Wert$[1] = ( ?[!%&]?[A-Za-z0-9]+[!%&]? ?)numerische Variable; Hex-, Binär- oder Octalzahl; Konstante oder Systemvariable
Wert$[2] = ( ?q{1}.*q{1} ?)String
Wert$[3] = ( ?([A-Za-z0-9ÄÖÜäöü~-_])+~$+ ?)Stringvariable oder Konstante
Wert$[4] = ( ?~$+[A-Za-z0-9ÄÖÜäöü~-_]+ ?)Stringkonstante
Proc Bearbeiten
Parameters Zeile$,hEdit&,hText&
Declare Funktion$,RegExpVar$,FunktionTransformiert$
Case Zeile$ > :SetText hEdit&,Zeile$
{ Sub:
RegExpVar$ = Term$[0,0] + ( + Wert$[0] + | + Wert$[1] + ) + , + ( + Wert$[0] + | + Wert$[1] + ) + ~)
While Match$(RegExpVar$,Zeile$) >
Funktion$ = Match$(RegExpVar$,Zeile$)
Set(RegEx,1)
FunktionTransformiert$ = Translate$(Funktion$,Term$[0,0],()
FunktionTransformiert$ = Translate$(FunktionTransformiert$,,,Term$[0,1])
Set(RegEx,0)
Zeile$ = Translate$(Zeile$,Funktion$,FunktionTransformiert$)
Case Zeile$ > :SetText hText&,Zeile$
Wend
}
{ Add:
RegExpVar$ = Term$[1,0] + ( + Wert$[0] + | + Wert$[1] + ) + , + ( + Wert$[0] + | + Wert$[1] + ) + ~)
While Match$(RegExpVar$,Zeile$) >
Funktion$ = Match$(RegExpVar$,Zeile$)
Set(RegEx,1)
FunktionTransformiert$ = Translate$(Funktion$,Term$[1,0],()
FunktionTransformiert$ = Translate$(FunktionTransformiert$,,,Term$[1,1])
Set(RegEx,0)
Zeile$ = Translate$(Zeile$,Funktion$,FunktionTransformiert$)
Case Zeile$ > :SetText hText&,Zeile$
Wend
}
{Add$:
RegExpVar$ = Term$[2,0] + ( + Wert$[2] + | + Wert$[3] + | + Wert$[4] + ),( + Wert$[2] + | + Wert$[3] + | + Wert$[4] + ) + ~)
While Match$(RegExpVar$,Zeile$) >
Funktion$ = Match$(RegExpVar$,Zeile$)
Set(RegEx,1)
FunktionTransformiert$ = Translate$(Funktion$,Term$[2,0],()
FunktionTransformiert$ = Translate$(FunktionTransformiert$,,,Term$[2,1])
Set(RegEx,0)
Zeile$ = Translate$(Zeile$,Funktion$,FunktionTransformiert$)
Case Zeile$ > :SetText hText&,Zeile$
Wend
}
{Mul:
RegExpVar$ = Term$[3,0] + ( + Wert$[0] + | + Wert$[1] + ) + , + ( + Wert$[0] + | + Wert$[1] + ) + ~)
While Match$(RegExpVar$,Zeile$) >
Funktion$ = Match$(RegExpVar$,Zeile$)
Set(RegEx,1)
FunktionTransformiert$ = Translate$(Funktion$,Term$[3,0],()
FunktionTransformiert$ = Translate$(FunktionTransformiert$,,,Term$[3,1])
Set(RegEx,0)
Zeile$ = Translate$(Zeile$,Funktion$,FunktionTransformiert$)
Case Zeile$ > :SetText hText&,Zeile$
Wend
}
{Div
RegExpVar$ = Term$[4,0] + ( + Wert$[0] + | + Wert$[1] + ) + , + ( + Wert$[0] + | + Wert$[1] + ) + ~)
While Match$(RegExpVar$,Zeile$) >
Funktion$ = Match$(RegExpVar$,Zeile$)
Set(RegEx,1)
FunktionTransformiert$ = Translate$(Funktion$,Term$[4,0],()
FunktionTransformiert$ = Translate$(FunktionTransformiert$,,,Term$[4,1])
Set(RegEx,0)
Zeile$ = Translate$(Zeile$,Funktion$,FunktionTransformiert$)
Case Zeile$ > :SetText hText&,Zeile$
Wend
}
{Div&
RegExpVar$ = Term$[5,0] + ( + Wert$[0] + | + Wert$[1] + ) + , + ( + Wert$[0] + | + Wert$[1] + ) + ~)
While Match$(RegExpVar$,Zeile$) >
Funktion$ = Match$(RegExpVar$,Zeile$)
Set(RegEx,1)
FunktionTransformiert$ = Translate$(Funktion$,Term$[5,0],()
FunktionTransformiert$ = Translate$(FunktionTransformiert$,,,Term$[5,1])
Set(RegEx,0)
Zeile$ = Translate$(Zeile$,Funktion$,FunktionTransformiert$)
Case Zeile$ > :SetText hText&,Zeile$
Wend
}
{MoveListTo
RegExpVar$ = Term$[8,0]
While Match$(RegExpVar$,Zeile$) >
Funktion$ = Match$(RegExpVar$,Zeile$)
FunktionTransformiert$ = Translate$(Funktion$,Funktion$,Term$[8,1])
Set(RegEx,0)
Zeile$ = Translate$(Zeile$,Funktion$,FunktionTransformiert$)
Case Zeile$ > :SetText hText&,Zeile$
Wend
}
{Set...
RegExpVar$ = Term$[9,0]
Declare Zahl$
While Match$(RegExpVar$,Zeile$) >
Funktion$ = Match$(RegExpVar$,Zeile$)
Zahl$ = SubStr$(Funktion$,2, )
FunktionTransformiert$ = Translate$(Funktion$,Zahl$,q, + Zahl$ + ))
FunktionTransformiert$ = Translate$(FunktionTransformiert$,Left$(FunktionTransformiert$,3),Left$(FunktionTransformiert$,3) + (q)
Zeile$ = Translate$(Zeile$,Funktion$,FunktionTransformiert$)
Case Zeile$ > :SetText hText&,Zeile$
Wend
}
Return Zeile$
EndProc
Proc DateiLaden
Declare Datei$,Zeile$
Datei$=LoadFile$(Profan-Code laden,Profan-Code (*.prf)|*.prf|
+ Include-Datei (*.inc)|*.inc)
If Datei$ >
ClearList Liste&
Assign #1,Datei$
Reset #1
WhileNot @Eof(#1)
Input #1,Zeile$
AddString(Liste&, Zeile$)
Wend
Close #1
WindowTitle Datei$ + geladen
EndIf
EndProc
Proc DateiBearbeiten
If GetCount(Liste&) > 0
Declare Zeile$,ZeileNeu$
ClearList ListeFertig&
WhileLoop 0,GetCount(Liste&)
locate 12,0
Zeile$ = GetString$(Liste&,&Loop)
ZeileNeu$ = Bearbeiten(Zeile$,Edit&,Text&)
AddString(ListeFertig&,ZeileNeu$)
If ZeileNeu$ <> Zeile$
AddString Str$(&Loop) + + Trim$(Zeile$)
AddString Str$(&Loop) + + Trim$(ZeileNeu$)
EndIf
Wend
ListBox$(Änderungen,2)
WindowTitle Translate$(GetText$(%hwnd),geladen,bearbeitet)
EndIf
EndProc
Proc DateiSpeichern
If GetCount(ListeFertig&) > 0
Declare Datei$
Datei$ = SaveFile$(Datei speichern,Profan-Code (*.prf)|*.prf|
+ Include-Datei (*.inc)|*.inc|
+ Andere (*.*)|*.*))
If Datei$ >
Assign #1,Datei$
ReWrite #1
WhileLoop 0,GetCount(ListeFertig&)
Print #1,GetString$(ListeFertig&,&Loop)
Wend
Close #1
WindowTitle Translate$(GetText$(%hwnd),bearbeitet,gespeichert)
EndIf
EndIf
EndProc
Window 1,1 - 1100,400
hFont& = Create(Font,MS Sans Serif,14,0,0,0,0)
SetDialogFont hFont&
Edit& = Create(Edit,%hwnd,,0,0,Width(%hwnd),24)
Text& = Create(Text,%hwnd,,0,50,Width(%hwnd),24)
btnLaden& = Create(Button,%hwnd,laden,10,100,60,24)
btnStarten& = Create(Button,%hwnd,starten,80,100,60,24)
btnSpeichern& = Create(Button,%hwnd,speichern,150,100,60,24)
Liste&=Create(List,0)
ListeFertig&=Create(List,0)
While 1
Waitinput
If Clicked(btnLaden&)
ChDir C:/ProfanTools
DateiLaden
ElseIf Clicked(btnStarten&)
DateiBearbeiten
ElseIf Clicked(btnSpeichern&)
DateiSpeichern
EndIf
Wend
DeleteObject hFont&
|
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 10.10.2006 ▲ |
| |
| | | | | - Página 4 - |
| Dietmar Horn | Sí, esta Versión startet wenigstens, auch si el Programmfenster para 1024 x 768 en el Höhe en etwa 20 - 30 Pixel kleiner ser podría, así lo vollständig en el Bildschjirm paßt.
Den Rest voluntad Yo später testen.
Ach así: ältere Versionen Yo quería ebenfalls testen, doch porque como en me absolut gar nichts passierte (todavía no veces una Fehlermeldung), Tuve mich sólo veces no groß más así befaßt.
Saludo Dietmar |
| | | Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 14.10.2006 ▲ |
| |
| | Dietmar Horn | Auf el Schnelle rausgefischt:
Aus -> FileMode 2 se -> Conjunto(Filemode ,2) gemacht (also Bug, porque una Leerzeichen zuviel).
Saludo Dietmar |
| | | Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 14.10.2006 ▲ |
| |
| | Jörg Sellmeyer | El Größe Yo ahora otra vez a kleiner Bildschirme angepaßt. Yo vergeß siempre, Yo una 19él habe y el nichtgerade Standard es. El Conjunto...-Befehle debería ahora trabajo.
(todavía no veces una Fehlermeldung), Tuve mich sólo veces no groß más así befaßt.
Schade, hätteste wenigstens el veces kurz mitgeteilt, entonces hätte Yo mich früher en el Fehlersuche hacer puede.
Saludo Jörg |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 14.10.2006 ▲ |
| |
| | Dietmar Horn | ¡Hola Jörg,
en kleineren Bildschirmauflösungen knallt lo a ahora trotzdem todavía!
Tip: simplemente %MaxX y %MaxY abfragen y dementsprechend (bajo Berücksichtigung des Client-Bereiches des Hauptfensters) el Objetos en el Ventana principal remendar.
Meiner Meinung después de debería una solches Tool auch heutzutage todavía abwärtskompatibel a a 640 x 480 ser (sólo dazu podría Yo Usted una kilometerlanges Posting como Begründung enviar - por qué, wieso, por qué usw. una solche Vorgehensweise todavía siempre günstiger wäre ...).
El oberen beiden CreateText-Zeilen sería Yo bastante weglassen. Auf schnelleren Rechnern erkennt uno como sowieso nix (außer daß como Irgendwas relativ sinnlos antes se rumzappelt) - y en langsameren PCs se por el zweimalige SetText en cada Codezeile el Programa sólo unnötig ausgebremst. En längeren Quelltexten interés solche Infos eh no - außer daß el Programa con seinem Getue möglichst rápidamente fertig voluntad möge.
Auch sería Yo el beiden Listviews o. Gridboxen ebenfalls no zeitnah ständig con cada el gerade bearbeiteten Codezeilen füllen, porque el bremst sólo unnötig y interessiert no. Einfach vom Programa el Arbeit así rápidamente como posible hacer dejar - y bien is lo.
Zum Schluß se schlicht y simplemente en irgendeiner vernünftigen Form el Ergebnis präsentiert, evtl. todavía con Editiermöglichkeit, o.ä. Den Rest se se cada Programmierer sowieso selber con seinem bevorzugten Editor anschauen y testen - also, si alles korrekt umgewandelt worden es, usw. ...
Der todo Grafik-Schnick-Schnack, usw. es meiner Meinung después de en una solchen Tool Pille-Palle y also völlig uninteressant.
Notfalls würden en längeren Sources como Fortschrittsanzeige (así el User no glaubt, daß se el Programa evtl. aufgehängt hätte) unos pocos kreiselnde o zappelnde einfache ASCII- oder Ansi-Signo ausreichen.
Yo glaube, algo como se total auch como Software-Ergonomie bezeichnet (más o menos ähnlich ...).
Saludo Dietmar |
| | | Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 14.10.2006 ▲ |
| |
| | Jörg Sellmeyer |
en kleineren Bildschirmauflösungen knallt lo a ahora trotzdem todavía!
Es sí ärgerlich! Usted hast natürlich bastante - el muß angepaßt voluntad. Trotzdem darf meiner Meinung después de kein simpler Choque passieren. Yo vermute veces, el Profano como ni Macke ha. Su Sugerencias Tuve todos ya en el ToDo-Liste. Lo voluntad todavía unos pocos Optionseinstellungen dazukommen, el el grafischen Sachen Abschaltbar hacer. (simplemente veces con rechter Botón del ratón el Ventana clic) Sind porque Su Codes korrekt traducido worden? Wenn como todavía Fehler son, es me en el Moment wichtiger, el a korrigieren.
Gracias fürs Testen! Saludo Jörg |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 14.10.2006 ▲ |
| |
| | | | - Página 5 - |
| | Frank Abbing | Schon una nützliches Programa, gerade para ältere Quellcodes. Nur EQU y EQU$ voluntad wohl todavía no traducido, el Quellcodes sí höchst unübersichtlich hacer. |
| | | | |
| | Jörg Sellmeyer | El Posesiones Sigo sin problemas vergessen! Gracias Franco!
Saludo Jörg |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 14.10.2006 ▲ |
| |
| | Jörg Sellmeyer | Yo denke Yo nähere mich uno endgültigen Versión
Das Programa Ahora debe bajo allen Auflösungen a mind. 800 x 600 laufen. Equ y Equ$ son instalado. el bearbeiteten Zeilen voluntad no adecuado auch el Listen sólo al Ende des Vorgangs gefüllt en el Optionsmenü puede umgeändert voluntad (rechte Botón del ratón ruft el Menü en) Wend podrá, a Wunsch salvo voluntad el Funktionsumwandlung podrá, a Wunsch abgeschaltet voluntad (z. B. si sólo alte DBase-Befehle en un sonst aktuellen Code son) el DBase-Befehle puede salvo voluntad (kleiner Geschwindigkeitsvorteil - sinnvoll si uno esta Funktionalitäten sowieso no en el Programa ha.)
una en el Editar campo bajo el rechten Listbox bearbeitete Línea ersetz con Enter direkt el entsprechende Línea en el linken Listbox.
En me braucht el Programa para ca. 5000 Zeilen 53 Sekunden. Also auch große Programas dejar se en akzeptabler Tiempo umwandeln. Yo voluntad ni Función einbauen con el después de el Umwandlung weitere (no bearbeitete ) Vorkommen el überflüssigen Begriffe encontrar dejar. el puede entonces a Fuß nachbearbeitet voluntad.
Bitte testen y rückmelden. Gracias otra vez a todos Tester! @Roland: Wenn lo porque endgültig fertig es, puede Programa gerne con en el CD.
Saludo Jörg |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 14.10.2006 ▲ |
| |
| | Peter Max Müller | Hello, An Jörch, (Yo weiß Yo nerve )
Am Ende des Umwandelns kommt una Fehlermeldung con Línea 527 Variable no declariert I%
Und esta Línea kannste veces testen.
Crear(Texto,D%,°C,509, 127,15,15)
Ferner fehlen scheinbar : Neq,Neq$,GT,LT y SetErrorLevel
Servus |
| | | | |
| | Rolf Koch | Sí, habe grad 30000 Zeilen durchgezogen. Werde lo en lauffähigkeit entonces veces testen. Tiempo fue todavía akzeptabel. Sieht ya veces super de. Jedoch weis uno nie, porque Yo printe en efecto Profanbefehle en Archivos y el muss Yo en algo Freizeit veces näher anschauen. Aber zuerst una vez: Respekt
Achja, el con I% no deklariert kommt en me auch. |
| | | | |
| | Jörg Sellmeyer |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 14.10.2006 ▲ |
| |
| | Torsten Rümker | Jörg Sellmeyer
en el Optionsmenü puede umgeändert voluntad (rechte Botón del ratón ruft el Menü en)
Yo habe en me en el Optionsmenü una Pantalla de error, si yo el DB befehle rausnehme (umschalten en nein) se auch el Menupunkt darunter en nein umgestellt (Also: Características => Operatoren). El Einstellung des Menüpunktes ändert se dadurch pero no, scheint also sólo falso vergebener Texto a ser.
MfG Torsten |
| | | Ich lerne, ob ich will oder nicht! Betriebssystem: - Ubuntu 15.x - Windows (diverse) XProfan Version: X2 | 15.10.2006 ▲ |
| |
|
Zum QuelltextTema opciones | 43.316 Views |
ThemeninformationenDieses Thema ha 10 subscriber: |