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.583 kB
Bezeichnung:JRPC3
Version:10.27
Kurzbeschreibung: JRPC3-Installer
Hochgeladen:15.02.2021
Ladeanzahl346
Herunterladen
1.699 kB
Bezeichnung:XProfEd_JR
Version:5.2
Kurzbeschreibung: Alte Version ohne AutoComplete zur Sicherheit
Hochgeladen:15.02.2021
Ladeanzahl216
Herunterladen
3.765 kB
Bezeichnung:JRPC3
Version:10.27
Kurzbeschreibung: ZIP-Datei statt Installer
Hochgeladen:02.04.2021
Ladeanzahl285
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 6 -


« 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
V4.09a: Klammeranalyse eingebaut

Bei fehlenden Klammern oder zuviel vorhandenen solchen wir wie bisher schon ein "Klammern nicht ausgewogen"-Fehler ausgegeben.

Jetzt wird dabei aber eine farbige Analyse der Klammersituation angezeigt.

Einfach einmal diesen (fehlerhaften) Code versuchen (Farbe wird hier ja nicht wiedergegeben, daher hilft nur ausprobieren):
declare i&,a%[100]
i&=(((i&+1)+2)+a%[100])-(((1+2)+3)+4

Wem das noch nicht genügt, dem wird zusätzlich die Klammeranalyse angeboten (mit "k" starten), bei der jedes Klammerpaar einzeln betrachtet wird. Wie das funktioniert, wird in der aktualisierten chm-Hilfedatei erklärt.

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
17.10.2021  
 




Jens-Arne
Reumschüssel
V1.12:
- es können nun Daten wie in vielen Basic-Dialekten mit DATA 1,2,3,... in eine Bereichsvariable übernommen werden (nach "DATA" in der chm-Hilfe suchen)
- auch Dateien können hardgecoded im Programm in eine Bereichsvariable übernommen werden, sodass die Dateien zur Laufzeit nicht mehr vorhanden sein müssen
- mit {$APPENDFILE2EXE} und {$APPENDSTRING2EXE} können Dateien und Strings an die erzeugte Exe-Datei angehängt werden (%ProgEnd scheint aber in XProfan X4 nicht mehr richtig zu funktionieren!)
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
28.11.2021  
 




Jens-Arne
Reumschüssel
V1.13a:
Für den Create-Befehl "DIALOG" gibt es drei neue spezielle Werte für die linke und obere Ecke.

Wenn X1 und/oder Y1 die Werte -1, -2 oder -3 hat/haben, wird der Dialog automatisch wie folgt ausgerichtet:
-1 = Ausrichtung am übergeordneten Fenster
-2 = Ausrichtung am Desktop
-3 = Ausrichtung am Bildschirm

-2 und -3 werden in der Regel dasselbe Ergebnis haben, solange der Desktop den gesamten Bildschirm füllt.

Beispiel:
declare hD%
cls
hD%=@create("DIALOG",%HWnd,"Mein Dialog",-1,-1,500,400)'der Dialog wird in x- und y-Richtung an %HWnd ausgerichtet
waitinput
end
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
05.12.2021  
 




p.specht

Laudabile est programmimum pro civitas omnibus!
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
06.12.2021  
 




Georg
Teles
Echt erstaunlich, super Arbeit !

ich komme nicht hinterher, das alles zu testen
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

25.12.2021  
 




funkheld
Hallo, guten Tag.
Ich habe mal dieses XProfan4 am laufen und habe dieses wunderbare jrpc3 entdeckt.
Ich benutze sehr gerne dieses xpse mit Xprofan3

Kannst du mir bitte einmal genau erklären wie ich xpse mit jrpc3 und XProfan4 benutze.
Mit 72 Jahren begreife ich deine Demo hier nicht.

Kannst du bitte mal etwas kleines einfaches Schreiben wo auch die Befehle von XProfan4 vorkommen und etwas kleines mit nProcs vom xpse?
Dieses ganze einbinden vom Programm bis zum laufen lassen kommt bei mir nicht an.

Danke.
Komm Gesund in das neue Jahr und bleibe auch Gesund.
 
31.12.2021  
 




Jens-Arne
Reumschüssel
Hallo Funkheld,

ok, ich versuche es mal. Ich gehe davon aus, dass Du mit nProcs vertraut bist. Dafür muss XPSE vorhanden sein, und zusätzlich jwasm.exe und polink.exe. XPSE erzeugt dann aus den nProcs eine DLL mit nativem Code, der extrem schnell ist.

JRPC3 benutzt nun seinerseits XPSE (sofern vorhanden), um nProcs direkt in eine solche DLL zu verwandeln und ruft die darin dann vorhandenen Funktionen direkt im XProfan-Programm auf. Es ist kein separates Aufrufen von XPSE erforderlich (Ausnahmen siehe Hilfe zu JRPC3, Stichwort nProcs). Die erzeugte DLL muss natürlich mit dem EXE-Programm zusammen weitergegeben werden.

Hier ein Beispiel von XProfan- und nProc-Code in einem Programm wie gewünscht.

Vorher aber bitte JRPC3 auf die aktuelle Version updaten, beim Erstellen dieses Beitrages ist mir noch ein Fehler aufgefallen, der ausgerechnet bei nProcs ohne Parameter auftrat.
declare _tc&

PROC ProfanCount

    declare i&,a&
    a&=0
    for i&,1,100000
    a&=a&+1
    endfor

ENDPROC

nPROC XPSECount

    declare i&,a&
    a&=0
    for i&=1 to 100000 do begin'XPSE-FOR-Syntax muss verwendet werden!
    a&=a&+1
    end

ENDPROC

'Hauptprogramm
cls
print "ProfanCount (relativ langsam)..."
_tc&=&gettickcount
ProfanCount
print "Dauer: "+@str$(&gettickcount-_tc&)+" ms"
print "XPSECount (viel schneller)..."
_tc&=&gettickcount
XPSECount()
print "Dauer: "+@str$(&gettickcount-_tc&)+" ms"
print "Fertig. Zum Beenden eine Taste drücken."
waitinput
end

Zur Umsetzung dieses Codes ist JRPC3 zu benutzen. Wenn Du dann darin "s" drückst, siehst Du, dass die nProc im umgesetzten Code verschwunden ist. Sie wurde direkt in die DLL übersetzt und ist daher im XProfan-Programm nicht mehr erforderlich. Zur besseren Lesbarkeit des umgesetzten Quelltextes kannst Du auch noch {$NOSHORTNAMES} in den Code schreiben, wenn Du möchtest.

Zum besseren Verständnis des Verhältnisses von XPSE zu JRPC3 sollte ich aber wohl noch anfügen, dass JRPC3 grundsätzlich XPSE ersetzt. Nur in ganz bestimmten Konstellationen, z.B. bei der Nutzung von nProcs, ist zusätzlich auch noch XPSE erforderlich.

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




funkheld
Danke für deine schnelle Hilfe.

Bei dir hier auf der ersten Seite sind 2x jrpc3 . Welches ist bitte die neueste jrpc3?

Habe schon wieder vergessen wie eine DLL jetzt zum starten gebracht wird mit XProfan4.

Die EXE hat 1629184 Byte..

Das habe ich eingefügt in der test.prf und compiliert in eine EXE :
----------------------------------------------
UseDLL("jtest_nprocs.dll")
-----------------------------------------------

Die EXE startet , es wird nichts angezeigt.

Danke.
 
31.12.2021  
 




Jens-Arne
Reumschüssel
Beide Dateien oben enthalten die aktuelle JRPC3-Version. Das eine ist ein EXE-Installationsprogramm, das andere eine ZIP-Datei, die man selbst in das XProfan-Stammverzeichnis entpacken muss. Man kann sich aussuchen, welche Variante man bevorzugt (manche Leute benutzen nicht so gerne EXE-Installer aus fremder Quelle).

Bei mir kommt eine etwas andere EXE-Größe des Testprogramms heraus: 1629696. Welche Profan-Version benutzt Du? X4 mit Patch auf X4a, das wäre die aktuellste?

Wenn ich das kompiliere und die EXE starte, erscheinen die Ausgaben, wie sie sollen.

Nur, um ganz sicherzugehen: Du hast das Beispielprogramm mit JRPC3 umgesetzt, richtig? Also nicht mit XPSE. Sprich JRPC3_64.exe (oder_32) ist als Interpreter hinterlegt.

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
31.12.2021  
 




funkheld
Habe XProfan4 mit X4a.
Deine neueste JRPC3

Interpreter :
D:\XProfanX4\JRPC3_64.exe oder JRPC3_32
Compiler:
D:\XProfanX4\profcomp.exe

Ausführen(interpreter):
jtest_nprocs.dll erstellt

Dann mein Programm test.prf :
----------------------
UseDLL("jtest_nprocs.dll")
----------------------

Compilieren
Meldung :
Programm erfolgreich kompiliert.

ExeDatei aus compilat erzeugen :
test.prc
Programm erfolgreich erzeugt

Wenn ich die EXE starte kommt kein Bild vom Programm, auch keine Fehlermeldung.

Kannst du mir diese 3 mal zukommen :
jwasm.exe
polink.exe
xpse.exe
Vielleicht stimmen die bei mir nicht ?

Mache ich einen Fehler in der reihenfolge?

Danke.
Gruss
 
31.12.2021  
 




Jens-Arne
Reumschüssel
Die Zeile mit UseDLL ist nicht nötig, sie würde ein echtes Programm nur beschleunigen, weil die erzeugte DLL dann nicht bei jedem Aufruf der darin enthaltenen nProcs neu in den Speicher geladen würde.

Ich vermute, Du kompilierst und linkst das Programm nicht in JRPC3, sondern aus XProfEd heraus direkt mit den XProfan-Werkzeugen. Das kann nicht funktionieren, weil für ein korrektes Kompilat die Datei jtest.enh3 kompiliert werden muss, nicht der Ursprungssourcecode jtest.prf. Daher muss nach dem Starten von JRPC3 darin mit "c" und "l" kompiliert und gelinkt werden.

Wenn es das jedoch nicht sein sollte, bin ich im Moment, ehrlich gesagt, etwas ratlos, was da schiefläuft.

Die drei Programme kann ich Dir zuschicken, wenn Du mir eine private Email-Adresse nennst. ich glaube aber eher nicht, dass es daran liegt.

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




funkheld
Hallo danke, das wars........
Jetzt funktioniert es.

Kann man ein komplettes Programm welches xpse enthält einfach so compilieren und linken?

Danke
Alles Beste im Neuenjahr.
 
31.12.2021  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

55.195 Betrachtungen

Unbenanntvor 0 min.
Gast.0815 vor 11 Tagen
Jens-Arne Reumschüssel vor 13 Tagen
R.Schneider vor 16 Tagen
Georg Teles vor 28 Tagen
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