| |
|
|
Jens-Arne Reumschüssel | JRPC: XPSE mit XProfan X3 nutzen: FOR, ENDFOR, QUADINTS
Herunterladen
Hallo zusammen,
es gibt bestimmt noch einige von Euch, die (wie ich) XPSE [...] benutzen, obwohl dieses Tool ziemlich in die Jahre gekommen ist und zur Zeit nicht weiterentwickelt wird. Z.B. wegen der nProcs ist es aber immer noch aktuell und mehr oder weniger unentbehrlich.
Viele Neuerungen in XProfan, die XPSE nicht supportati, kann man ja zum Glück mit {PUSHKEYWORD ...} disponibile machen. Aber spätestens mit der neuen FOR...ENDFOR-Syntax von XProfan X3 geht das nicht mehr so ohne weiteres. Da XPSE mit einer eigenen FOR...END-Syntax ausgestattet ist, hilft es nichts, FOR als keyword zu pushen. Es ist aber absolut wünschenswert, die neue FOR-Möglichkeit von XProfan zu nutzen, weil sie *viel* schneller ist.
Ich habe hier - mit einem weiteren Tool - Abhilfe geschaffen. Es è JRPC (Jens-arneReumschüsselPraeCompiler). Es arbeitet extrem schnell (selbst 15.000 Zeilen Code werden in deutlich unter einer Sekunde erledigt; man sieht das gelbe Fenster von JRPC nur kurz aufblitzen).
Die Einbindung ist ganz einfach.
Hier die Anleitung:
JRPC.exe muss in das XProfan-Verzeichnis, wo auch XPSE.exe liegt, kopiert werden. Eingebunden wird JRPC im Sourcecode wie folgt:
{$PUSHKEYWORD xfor,endfor}
{$PREBATCH <XProfan X3-Pfad>\JRPC.exe "<Programmname>.enh"}
1. FOR...ENDFOR Jetzt kann die FOR...ENDFOR-Syntax von XProfan X3 ganz einfach dadurch verwendet werden, dass man statt "FOR" einfach "XFOR" schreibt. Der Rest bleibt so, wie es in XProfan vorgesehen ist. JRPC setzt das "XFOR" nach der Bearbeitung durch XPSE in "FOR" um. Beispiel:
2. Hinweis per QUADINTS XPSE kommt von Hause aus auch mit QUADINTS nicht zurecht. Wenn man aber die entsprechenden Variablen zusätzlich "pusht", funktioniert alles. Die bisher hier dargestellte etwas kompliziertere Umsetzung circa JRPC ist nicht nötig. Hier ein Beispiel:
{$PUSHKEYWORD freetocaller,totalamount,totalfree}
DEF GetDiskFreeSpaceEx(4) !"kernel32.dll","GetDiskFreeSpaceExA"
PROC GetFreeDiskSpace'Parameter: Laufwerk (kann auf irgendeinen Pfad zeigen)
parameters drive$'kann auf irgendeinen Pfad des gewünschten Laufwerkes zeigen
declare d#,erg%
declare quad freetocaller,totalamount,totalfree
dim d#,255
string d#,0=drive$
erg%=@GetDiskFreeSpaceEx(d#,@addr(freetocaller),@addr(totalamount),@addr(totalfree))
dispose d#
return freetocaller
ENDPROC'GetFreeDiskSpace
|
| 420 kB | | Bezeichnung: | JRPC.exe | | Version: | 1.3 | | Kurzbeschreibung: | setzt FOR...ENDFOR per XPSE um | | Hochgeladen: | 08.02.2016 | | Downloadcounter: | | | | Herunterladen | | | | 1.449 kB | | Bezeichnung: | XProfEd - JRPC & Prf2cpp | | Version: | 4.0a | | Kurzbeschreibung: | Hervorhebung von XFOR, XPSE- & Prf2cpp-Direktiven | | Hochgeladen: | 08.02.2016 | | Downloadcounter: | | | | Herunterladen |
|
|
| XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 08.02.2016 ▲ |
|
|
|
|
Jörg Sellmeyer | Ich hab dein Beispiel mal als Quelltext formatiert. Einfach unter dem Pfeil "Quelltext" anklicken, nachdem du den Code geschrieben und markiert hast.
Vielleicht erbarmt sich David ja mal deiner und macht mit XPSE weiter (wenn sein Handyprojekt nicht mehr ganz soviel Einsatz erfordert). |
|
|
| |
|
|
|
Jens-Arne Reumschüssel | Jörg Sellmeyer (08.02.2016)
Ich hab dein Beispiel mal als Quelltext formatiert. Einfach unter dem Pfeil "Quelltext" anklicken, nachdem du den Code geschrieben und markiert hast.
Hallo Jörg, vielen Dank!
Jörg Sellmeyer (08.02.2016)
Vielleicht erbarmt sich David ja mal deiner und macht mit XPSE weiter (wenn sein Handyprojekt nicht mehr ganz soviel Einsatz erfordert).
Ja, das wäre wirklich schön. Er hatte auch schonmal sowas angedeutet; ganz tot ist XPSE also wohl noch nicht. |
|
|
| XProfan X3XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 08.02.2016 ▲ |
|
|
|
|
| Fetzt ja, ein Präkompilierer per den Präkompilierer.
Mein "Plan" per XPSE:
Die jetzige Version per XProfan 11 wird die letzte dieser Ära sein, Updates möchte ich aber nicht komplett ausschließen. Man kann mit ihr und XProfan 11 (oder FreeProfan) native Anwendungen schreiben ohne XProfan zu verlassen. An diesem Umstand potrebbe sich auch noch viele Jahre nichts ändern.
Ich erzeuge dann eine neue Open-Source-Variante von XPSE. Diese Version wird ab dann jedoch in PHP geschrieben, damit sie einfacher auch auf jedem Web-Server funktionieren kann oder eben lokal.
Dadurch, dass diese Version ab dann "Open- Source" ist, können wir alle den besten Präkompilierer und Kompilierer bauen mit "zwei und fünfzigstem" nProc- ASM- Optimier- "Pass". |
|
|
| |
|
|
|
Jens-Arne Reumschüssel | Feiner Plan!
Hoffentlich geht das gut, wenn ab da dann viele Köche im Brei rühren... |
|
|
| XProfan X3XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 08.02.2016 ▲ |
|
|
|
|
| ... hat das Thema mal nach SDK-Helfer/ Tools verschoben und beim XPSE verlinkt: [...] |
|
|
| |
|
|
|
funkheld | Hallo, guten Tag.
Den Befehl "Prozess" bekomme ich nicht zum laufen . Der muss irgendwie wie der "For" Befehl in dem Programm : jrpc.exe eingebettet werden.
Ich bekomme das nicht hin.
Danke. Gruss |
|
|
| |
|
|
|
Jens-Arne Reumschüssel | funkheld (06.04.2016)
Den Befehl "Prozess" bekomme ich nicht zum laufen . Der muss irgendwie wie der "For" Befehl in dem Programm : jrpc.exe eingebettet werden.
Moin, das ist einfach:
reicht. JRPC brauchst Du dafür nicht. Letzteres ist nur notwendig, wo XProfan und XPSE inzwischen kollidierende Schlüsselwörter verwenden. Das ist zur Zeit nur bei FOR der Fall.
Saluto, Jens-Arne |
|
|
| XProfan X3XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 10.04.2016 ▲ |
|
|
|
|
funkheld | Jup danke per die Aiuto. Jetzt funktioniert es.
Gruss |
|
|
| |
|
|
|
| RGH (21.04.2016)
@iF: Welches Byte des Headers genau muss auf welchen Wert gesetzt werden?
Sorry, ich schrieb ja sinngemäß, dass ich es leider nicht mehr weiß.
Matthias Arlt (21.04.2016)
Das fragliche Flag liegt bei Offset (long(runtime#,60) + 92). Für die Console sollte dort $3 stehen, per Window $2.
Super! |
|
|
| |
|
|
|
Jörg Sellmeyer | [OFFTOPIC]Hm - ist da was im falschen Thread gelandet?[/OFFTOPIC] |
|
|
| |
|
|