Deutsch
SDK-Helfer/ Tools

JRPC neuer Präkompiler für XProfan X4 - JRPC3

 
- Seite 1 -



Jens-Arne
Reumschüssel
Guten Abend zusammen,

ich bin kürzlich über das Problem gestolpert, dass XPSE eine ziemlich große Quelldatei von mir nicht mehr verarbeiten konnte. Variablen wurden plötzlich als nicht definiert gemeldet und andere "erratische" Probleme mehr. Ich könnte mir vorstellen, dass dies daran liegt, dass XPSE Schlüsselworte in Windows-Atoms verwaltet. Da ist irgendwann Schluss (bei irgendwas zwischen 60.000 und 70.000 Stück, wobei man bedenken muss, dass XPSE die Windows-API mit vorhält). Vielleicht ist es aber auch etwas ganz anderes, ich kann ja nicht in den "Maschinenraum" von XPSE schauen.

Jedenfalls blieb mir, da XPSE nicht mehr gepflegt wird, nichts anderes übrig, als das nachzubauen. Das Ergebnis ist JRPC3.

----- Features:

*vernünftige Meldung von Fehlern
*direkte Anzeige des Programmablaufes in XProfEd (sofern der unten erhältliche aufgebohrte XProfEd verwendet wird)
*Umsetzung der alten Profan-Syntax für Operatoren und alte Containerfunktionen
*extrem schnelle native fbPROCs, sofern man FreeBasic installiert hat (kostenlos, siehe Hilfe)
*mit fbPROCs kann zudem Inline-Assembler auch vor XProfan X4 realisiert werden
*extrem schnelle native pbPROCs, sofern man PureBasic installiert hat
*Echtzeitverfolgung von Variableninhalten
*einfache Zeitmessungen im Programmablauf
*Profan-Kompilerdirektiven funktionieren endlich vernünftig (z.B. Verschachtelung)
*eingebettete Variablen funktionieren auch mit Arrays
*die meisten WIN32-API-Funktionen sind bereits vordefiniert mitgeliefert
*API-Aufrufe über @external(...) werden automatisch in @call(...)-Aufrufe umgesetzt
*Einrückungsanalyse zum Finden von vertrackten Verschachtelungsfehlern
*Klammeranalyse zum Finden von vertrackten Klammerfehlern
*ENUMERATE-Funktionalität
*Assert zur Fehlerkontrolle
*es können beliebige DLLs in die XProfan-EXE integriert werden, sodass sie nicht mit ausgeliefert werden müssen (siehe {$WrapDll})
*einfaches Killen von mit JRPC3 gestarteten Programmen (interpretiert, .prc gestartet, .exe gestartet)
*extrem schnell (und daher natürlich nicht in XProfan geschrieben, da eine interpretierte Sprache hierfür naturgemäß viel zu langsam ist)
*beim Start von JRPC3 bereits vorhandene .prc-Dateien können zum Starten und Linken genutzt werden (es wird ein Hinweis angezeigt, dass es sich um ein altes Kompilat handelt)
*der Profan-Compiler kann zur Beschleunigung mit hoher Prozessorpriorität aufgerufen werden
*eingebauter Update-Checker mit Download, falls es ein Update gibt (Hilfe --> online nach Updates suchen)
*64- oder 32-bit-Version verfügbar (einfach JRPC3_64.exe oder JRPC_32.exe als Interpreter in XProfEd hinterlegen [Optionen --> Allgemeine Einstellungen] und JRPC3 mit F7 starten) - Achtung, die 64-bit-Version erzeugt natürlich keine 64-bit-XProfan-Programme, da XProfan das nicht kann, sondern JRPC3 selbst wird als 64-bit-Programm ausgeführt
*XProfan X4-Syntax verfügbar (möglicherweise noch nicht alles, da ich vermutlich nicht alles davon benutze, aber ich habe mich um Vollständigkeit bemüht - jedenfalls sind z.B. HASH-Arrays und QUADINTs dabei)
*Interpreter, PRCs und EXEs können mit Kommandozeilenparametern ausgeführt werden
*Interpreter, PRCs, EXEs und XPSE können mit Administratorrechten ausgeführt werden
*Prozeduren, die in dem aktuellen Programm zwar enthalten sind, aber nicht verwendet werden, werden aus der umgesetzten Datei entfernt, um die Dateigröße des Kompilats möglichst klein zu halten
*Variablen, die in dem aktuellen Programm zwar enthalten sind, aber nicht verwendet werden, werden aus der umgesetzten Datei entfernt, um die Dateigröße des Kompilats möglichst klein zu halten und den Speicherverbrauch zu optimieren
*nPROCs aus XPSE werden automatisch mit XPE zu einer DLL umgesetzt und die Aufrufe der nPROCs im Programm entsprechend angepasst, sofern XPSE vorhanden ist
*fast alles aus XPSE funktioniert auch in JRPC3 ({$NOERR}, {$(PRE)BATCH}, {$PUSHKEYWORD}, Interpreter, Runtime und Compiler festlegen, Shorties, ...)
*XProfEd_JR mit Quelltext-AutoComplete
*XProfEd_JR mit Quelltext-Memory-Funktion (Markierungen, zu denen zurückgesprungen werden kann)

Einschränkungen:
-kein XPSE-Inline-Assembler, wohl aber XProfan-Inline-Assembler (darin allerdings keine Prüfungen auf Korrektheit des Codes)
-ABER: man kann XPSE aus JRPC3 heraus aufrufen, sodass diese Funktionalität weiterhin verfügbar ist, sofern man XPSE besitzt (neuer Shorty: {$x})
-Variablen, die in einer Prozedur nicht deklariert sind, sondern "aus der aufrufenden Prozedur übernommen werden", sind standardmäßig nicht zugelassen (XProfan erlaubt das, aber so etwas ist genauso tödlich wie GOTO-Anweisungen). Bitte alle zu nutzenden Inputs als Parameter übergeben, und wenn etwas aus dem aufrufenden Programmteil verändert werden muss, beim Aufruf als Parameter z.B. @addr(x&) verwenden und in der Prozedur parameters x# und LONG x#,0=y& nutzen.
Wenn man aber unbedingt "vererbte" Variablen nutzen möchte, kann man dies mit der Kompilerdirektive {$Declare...} tun.

*als Hommage an XPSE lautet die Endung der Ausgabedatei ".enh3"

Eine genauere Erläuterung der einzelnen Features ist der chm-Hilfedatei zu entnehmen, die im Programm unter Hilfe --> Hilfedatei anzeigen oder mit F1 verfügbar ist.

----- /Features

Herunterladen und installieren:
JRPC3 kann unten heruntergeladen werden (setup_jrpc3.exe oder als ZIP-Datei).
Als Installationsverzeichnis bitte das XProfan-Stammverzeichnis angeben, also dasjenige, in dem die Dateien PROFAN.EXE, PROFCOMP.EXE, PRFRUN32.EXE etc. liegen. Alternativ kann die ZIP-Datei heruntergeladen und deren Inhalt manuell ins XProfan-Stammverzeichnis kopiert werden.

Einrichtung:
JRPC3_64.exe oder JRPC_32.exe als Interpreter in XProfEd hinterlegen [Optionen --> Allgemeine Einstellungen] und JRPC3 mit F7 starten.

Alle Befehle sind mit dem Befehl "h" wie "Hilfe" abrufbar und sollten selbsterklärend sein.

Für viele erweitere Features, die XProfEd betreffen, wie z.B. jenes, die Zeile, in der ein Fehler auftrat, direkt in XProfEd anzeigen zu können, ist der mitinstallierte XProfEd_JR erforderlich. Dafür muss man also XProfEd_JR.exe statt XProfEd.exe als Editor benutzen. Als "goody" gibt es dazu, dass beim Auf- und Zufalten von Programmen ein Fortschrittsanzeiger integriert ist (das kann bei großen Programmen ja bekanntlich ein bisschen dauern).

Es mag sein, dass noch nicht alles perfekt funktioniert. Ich bitte hierfür um Nachsicht. Meine  Programme lassen sich umsetzen, aber das muss noch lange nicht heißen, dass dies mit Programmen anderer Autoren, die jeder so ihre Eigenheiten haben, auch funktioniert.

Fehlermeldungen und Verbesserungsvorschläge gerne an jreumsc@web.de oder hier im Forum.

Beste Grüße, Jens-Arne

2.584 kB
Bezeichnung:JRPC3
Version:10.29
Kurzbeschreibung: JRPC3-Installer
Hochgeladen:15.02.2021
Ladeanzahl363
Herunterladen
1.699 kB
Bezeichnung:XProfEd_JR
Version:5.2
Kurzbeschreibung: Alte Version ohne AutoComplete zur Sicherheit
Hochgeladen:15.02.2021
Ladeanzahl224
Herunterladen
3.777 kB
Bezeichnung:JRPC3
Version:10.29
Kurzbeschreibung: ZIP-Datei statt Installer
Hochgeladen:02.04.2021
Ladeanzahl291
Herunterladen
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
16.02.2021  
 



 
- Seite 4 -


« Dieser Beitrag wurde als Lösung gekennzeichnet. »

- Seite 15 -



Jens-Arne
Reumschüssel
Es gibt eine neue Version, die anders mit dem internen Messagehandling umgeht. Bitte probier die mal aus. Vielleicht ist das Problem damit behoben.
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
24.09.2022  
 




Jens-Arne
Reumschüssel
p.specht (19.06.2021)
Jetzt trage ich sicher Eulen nach Athen und werde gleich ganz doof dastehen:
Sind die Parameter nicht auf MSDN in den api-Beschreibungen zu finden?


Natürlich sind sie das. Aber hättest Du Lust, für tausende von API-Funktionen von dort händisch die jeweilige Parameteranzahl zusammenzusammeln, um dann in JRPC3 darauf prüfen zu können?
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
19.06.2021  
 




p.specht

*genier*
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
19.06.2021  
 




Jens-Arne
Reumschüssel
Alles gut!
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
19.06.2021  
 




Jens-Arne
Reumschüssel
Programmversion 3.06:

Der Check auf die korrekte Anzahl Parameter bei API-Aufrufen über @external(...) ist nun eingebaut. Ich habe eine entsprechende Quelle gefunden. Dabei konnten die vordefinierten API-Befehle und -Konstanten auch gleich um einige zehntausend erweitert werden (vorher: 10.811, jetzt: 61.467).

EDIT: Musste V3.06c nachschieben, weil es API-Konstanten gibt, die gleichnamig mit API-Funktionen sind (z.B. ~MultiByteToWideChar). Da mussten die wenigen Konstanten, bei denen das so ist, leider rausfliegen, weil es sonst zu Doppeldeutigkeiten kommt, die nicht gesund sind (123 Stück, um genau zu sein).
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
20.06.2021  
 




Jens-Arne
Reumschüssel
V3.09:

API-Aufrufe über @external(...) werden jetzt automatisch in @call(...)-Aufrufe konvertiert. Diese arbeiten schneller, weil dabei die Einsprungadresse der Funktion in der DLL nicht jedes Mal festgestellt werden muss.

Dieses Feature lässt sich mit der Compilerdirektive {$NOEXTERNAL2CALLCONVERSION} abschalten. Dies ist immer dann nötig, wenn Prozeduren als Prozesse aufgerufen und darin @external(...)-API-Aufrufe verwendet werden, weil die im Hauptprogramm definierten @call(...)-Adressen sonst im Speichernirvana des neuen Prozesses enden würden.
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
22.06.2021  
 




Jens-Arne
Reumschüssel
V3.16:

Bugfixes

-In Prozeduren, die als Prozesse aufgerufen werden, wird die external-zu-call-Umsetzung nun automatisch deaktiviert, weil die im Hauptprogramm ermittelten Funktions-Einsprungadressen darin nicht bekannt sind ({$NOEXTERNAL2CALLCONVERSION} ist hierfür nicht mehr nötig).
-Standardmäßig werden nun kurze und kryptische Variablennamen für die Call-Einsprungadressen verwendet, weil XProfan diese sehr viel schneller abarbeitet als lange, sprechende Variablennamen. Da dann der umgesetzte Sourcecode aber nicht mehr aus sich heraus verständlich ist, wird ganz am Anfang des Programmes eine Legende der kurzen Variablennamen in Form von Kommentarzeilen angelegt, der zu entnehmen ist, zu welcher Einsprungsadressen-Variable welche DLL mit welcher Funktion gehört (*nicht* sortiert, bitte die Suchfunktion von XProfEd nutzen, um die interessierende Variable zu finden).
-Mit {$CALLUSELONGVARNAMES} kann auf die Verwendung von langen, sprechenden Einsprungadressen-Variablen umgeschaltet werden, um das umgesetzte Programm noch leichter debuggen zu können. Wenn alles läuft, sollte diese Compilerdirektive wieder entfernt werden, um den Code zu beschleunigen.
-Man kann eigene DLL-Funktionsdefinitionen in eine Datei schreiben, für die JRPC3 dann ebenfalls die Parameterzahl überprüft und @external(…)- zu @call(…)-Aufrufe konvertiert. Hierzu ist eine Textdatei mit beliebigem Dateinamen und der Endung „.dlldat“ zu erstellen. In jeder Zeile steht die Definition für eine Funktion, die von einer DLL exportiert wird. Zunächst ist der Name der DLL in Großbuchstaben anzugeben (z.B. »MEINEDLL.DLL«). Es folgt, getrennt durch ein »|», der Name der exportierten Funktion, wobei Groß- und Kleinschreibung zu unterscheiden ist (z.B. »MeineExportierteDllFunktion«). Dann ist noch, wieder durch »|» getrennt, die Anzahl Funktionsparameter anzugeben (z.B. »1«). Beispielzeile:
MEINEDLL.DLL|MeineExportierteDllFunktion|1
Diese Datei mit benutzerdefinierten Daten kann entweder ins XProfan-Stammverzeichnis geschrieben werden, dann werden die dort abgelegten Definitionen bei jedem Start von JRPC3 geladen. Oder sie können in einem Verzeichnis abgelegt werden, in dem ein bestimmtes Programmierprojekt, namentlich die .prf-Datei, liegt. Dann werden die Definitionen nur geladen, wenn genau dieses bestimmte Programm umgesetzt werden soll.
Zeilen, die mit »‘« beginnen, werden – wie in Profan – als Kommentarzeilen ignoriert.
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
21.07.2021  
 




Jens-Arne
Reumschüssel
V3.18: Enumerate-Funktionalität

*ENUMERATE-Funktionalität in Headerdateien (ab V3.17)
-In einer .ph-Datei kann mit ENUM [Startwert [Step]] eine fortlaufend weitergezählte Reihe von Ersetzungsdefinitionen erstellt werden. Die nachfolgenden Ersetzungsdefinitionen werden direkt mit »;« abgeschlossen, ohne Gleichheitszeichen und Wertangabe. Es kann jedoch optional »<Ersetzungsdefinition>=<NeuerWert>;« angegeben werden, dann wird die Aufzählung von diesem neuen Wert aus fortgesetzt. Der Step-Wert lässt sich allerdings nicht mehr verändern. Soll dies geschehen, muss ein neuer ENUM-Block verwendet werden.
-ENDENUM schließt den ENUM-Block ab.
-Diese Funktionalität von JRPC3 ist beispielsweise nützlich, wenn man fortlaufende UserMessage-Definitionen erstellen möchte, etwa im Messageraum ab $8000, der für Applikationen reserviert ist und nicht mit den windowseigenen Messages kollidiert. Wenn man später mittendrin eine neue Definition einfügen möchte, ist dies kein Problem. Bisher hätte man dann alle nachfolgenden Definitionen per Hand um eins erhöhen müssen. Es sind diverse weitere Konstellationen denkbar, in denen diese automatischen Aufzählungen sehr nützlich sind.
-Beispiele:
ENUM
Rot;'~Rot wird im Programm durch 1 ersetzt
Gruen;'~Gruen wird im Programm durch 2 ersetzt
Blau;'~Blau wird im Programm durch 3 ersetzt
ENDENUM

ENUM 100 2'nicht mit Komma, sondern mit Leerzeichen abtrennen!
Rot;'erhält den Wert 100
Gruen;'erhält den Wert 102
Blau=500;'erhält den Wert 500
Gelb;'erhält den Wert 502
ENDENUM

*ENUMERATE-Funktionalität im Hauptprogramm (ab V3.18)
-ENUM ist auch im Hauptprogramm für Konstantendefinitionen möglich.
-Beispiele:
ENUM
%Rot'erhält den Wert 1
%Gruen'erhält den Wert 2
%Blau'erhält den Wert 3
ENDENUM

ENUM 100 2'nicht mit Komma, sondern mit Leerzeichen abtrennen!
&Rot'erhält den Wert 100
&Gruen'erhält den Wert 102
&Blau=500'erhält den Wert 500
&Gelb'erhält den Wert 502
ENDENUM

Beste Grüße, Jens-Arne
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
29.07.2021  
 




Jens-Arne
Reumschüssel
V3.22:
* Interpreter, PRCs, EXEs und XPSE können jetzt mit Administratorrechten ausgeführt werden (hierzu nach dem Start von JRPC3 zum Umschalten »d« drücken)
-Dies ist hilfreich beim Testen von Programmen, die später mit Administratorrechten arbeiten sollen. Insbesondere kann dies hierdurch bereits beim interpretierten Testen ausprobiert werden.
-Solcherart gestartete Programme können allerdings nicht mit »K« gekillt werden!
-Fertige Programme benötigen später zum Ausführen mit Administratorrechten ein mit einem entsprechenden Manifest ausgestattetes Runtime-Modul beim Linken (nähere Informationen hierzu z.B. im Forum auf xprofan.de --> PROFAN-Programmierung --> Thema »Programmdetails für Profan-Tools«, 5. Antwort). Testweise kann aber aus JRPC3 heraus eine EXE-Datei, wie gesagt, »on the fly« mit Admin-Rechten gestartet werden.

V3.23:
Einrückungsanalyse von einigen schwereren Bugs befreit

Beste Grüße, Jens-Arne
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
02.08.2021  
 




Jens-Arne
Reumschüssel
V3.24:

ENUM kann nun für Erstellung von Flag-Werten auch mit Potenzen arbeiten. Hierfür ist dem Step-Wert ein »^« voranzustellen. Dann wird der Step-Wert fortlaufend mit dem immer um 1 erhöhten Startwert potenziert. Die Flags können im Programm dann bitweise abgefragt werden. Nachträgliche Veränderungen des Startwertes sind hier nicht erlaubt.
ENUM 0 ^2
Flag1;'erhält den Wert 2^0=1
Flag2;'erhält den Wert 2^1=2
Flag3;'erhält den Wert 2^2=4
Flag4;'erhält den Wert 2^3=8
ENDENUM

Gruß, Jens-Arne
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
03.08.2021  
 




p.specht

Langsamer bitte, ich komme mit dem Downloaden nicht mehr nach!
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
04.08.2021  
 




Jens-Arne
Reumschüssel
Hmm. Hilft nichts. Du hast im Profan-Forum zu Recht angemerkt, dass es noch keine vernünftige Hilfedatei gibt. Ich habe jetzt die ungeordneten Themen aus dem Anleitungs-PDF in eine chm-Datei gepackt. Da ist es dann zumindest schon einmal etwas sortierter.

Also neue Version (build 152). Die Hilfedatei kann im Menü »Hilfe« aufgerufen werden.
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
05.08.2021  
 




Georg
Teles
p.specht (04.08.2021)
Langsamer bitte, ich komme mit dem Downloaden nicht mehr nach!


Geht mir genauso langsam überleg ich mir ein universelles VersionierungsManagement wie Git aber lokal
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

06.08.2021  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

63.124 Betrachtungen

Unbenanntvor 0 min.
Jens-Arne Reumschüssel vor 5 Tagen
Manfred Barei25.09.2024
Gast.081529.08.2024
R.Schneider23.08.2024
Mehr...

Themeninformationen



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