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
Ladeanzahl371
Herunterladen
1.699 kB
Bezeichnung:XProfEd_JR
Version:5.2
Kurzbeschreibung: Alte Version ohne AutoComplete zur Sicherheit
Hochgeladen:15.02.2021
Ladeanzahl231
Herunterladen
3.777 kB
Bezeichnung:JRPC3
Version:10.29
Kurzbeschreibung: ZIP-Datei statt Installer
Hochgeladen:02.04.2021
Ladeanzahl297
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 18 -


« 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
neue Version V8.06:

in XProfEd_JR können nun eigene Keywords zum Code-AutoComplete hinzugefügt werden (siehe Hilfe zu JRPC3, Stichwort Code-AutoComplete).

Eine sehr nützliche Anwendungsidee dafür ist etwa das Aufnehmen von Tabellen- und Spaltennamen von Datenbanken.

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
02.10.2022  
 




Jens-Arne
Reumschüssel
V8.09:
· XPRofEd_JR:
- alles auf-/zufalten extrem beschleunigt
- Deadlock-Bug bei Headerdefinitionen behoben
- @HTMLWin("..." zu AutoComplete hinzugefügt
- alles ersetzen nun auch im zugefalteten Zustand möglich, ohne dass der Editor hängt
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
14.10.2022  
 




p.specht

Super!
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
14.10.2022  
 




Jens-Arne
Reumschüssel
V8.10:
Lokale Variablen werden nun standardmäßig in globale Variablen übersetzt. Das ergibt je nach Situation einen erheblichen Perfomancegewinn. Immer dann, wenn Prozeduren oft aufgerufen werden, müssen alle lokalen Variablen bei jedem Aufruf neu im Speicher reserviert werden. Dies wird so umgangen.
Diese Funktion kann mit {$NoLocal2GlobalVarConversion} abgeschaltet werden.
Parameter und For-Laufzeitvariablen werden nicht in globale Variablen konvertiert.

Beispiel (kompiliert ausführen, sonst dauert's gar zu lange):

'{$NoLocal2GlobalVarConversion} 'auskommentiert=schnell

declare tc&

PROC TestProc
declare a%,b%,c%,d%,e%,f%,g%,h%,i%,j%
a%:=1
b%:=2
c%:=3
d%:=4
e%:=5
f%:=6
g%:=7
h%:=8
i%:=9
j%:=10
ENDPROC

cls
tc&=&GetTickCount
WhileLoop 1,100000
TestProc
EndWhile
print &GetTickCount-tc&
waitinput
end

So fügen sich die verschiedenen Beschleunigungsmethoden ineinander (nicht genutzte PROCs und VARs entfernen, lokale in globale VARs konvertieren, external in call übersetzen, lange Variablen- und PROC-Namen kürzen). Jede Methode für sich mag nur Millisekunden bringen, aber kombiniert holen wir so immerhin das Beste aus XProfan heraus, was irgendwie geht.

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
23.10.2022  
 




p.specht

Wenn lokale und globale Variablen gleich heißen, wie unterscheidet man die dann? Oder muss der Programmierer solche kollisionen vermeiden?
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
24.10.2022  
 




RudiB.
Gute Frage...
Ich denke mal dann muss man Kollisionen eben vermeiden, bzw. ältere Programme umschreiben (oder eben mit {$NoLocal2GlobalVarConversion}, das ganze ausschalten.
Im Grunde ist das ja eine gute Idee, der Performance wegen, jedoch finde ich Lokale Var's nach wie vor gut. Hiermit ist man wesentlich flexibler in der Programm-Gestaltung und muss sich nicht ständig Gedanken machen, welchen Namen habe ich hier schon global vergeben.....

Als Nächstes würde dieses, wenn alle Variablen Global gemacht werden, meine ganzen Bemühungen mit meinem Programm "VarFinder" torpedieren...
Ist gar nicht böse gemeint... ich bin der Performance wegen, um jede in einer Proc deklarierten Variable dankbar, da dann globale Variablen nicht in jeder Prozedur gesucht werden müssen. Das spart auch Zeit....
Andererseits hat Jens-Arne mir persönlich mit JRPC3 ein Geschenk gemacht, was das alles mehr als wett macht.... (bis zu 100x Schneller, nach meinen bisherigen Messungen)
Muss jetzt aber dafür mich auch in FreeBasic reinhängen/lernen, um viele meiner Prozeduren umzuschreiben...
Das ist ein Wahnsinniger Zeitfaktor...sind Stunden..Tage... Wochen meines Lebens

Mein FAZIT im Allgemeinen jedoch:
TOP!!!! Jens-Arne bitte mach weiter so.
Es gibt wenige hier, in diesem Forum, die solch ein Tolles Projekt oder überhaupt mal ihre Projekte vorstellen...... als wenn alles so Geheim ist.
JRPC3 in Kombination mit XProfan, das haucht dem ganzen wieder Leben ein....
Vielleicht setzen sich Roland und Jens-Arne mal zusammen......
Das könnte eine gigantische Kombination werden...

Gruß aus München
Rudi
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
24.10.2022  
 




RudiB.
Noch ein kleiner Nachtrag:

Nach wie vor ist XProfan die bisher komfortabelste und beste Programmierumgebung, die ich je kennengelernt habe.
Und wenn man nicht unbedingt die Super-Peformance braucht, dann eben nur XProfan !!!
Jedoch wer beides will, dann ist eben nicht mehr ganz so PROFAN (einfach).
PROFAN = "einfach"
XPROFAN = "auch einfach"
XPROFAN + JRPC3 = "nicht mehr so einfach, aber schnell...schneller"
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
24.10.2022  
 




Jens-Arne
Reumschüssel
Hallo zusammen,

Eure Programme können selbstverständlich weiterhin mit lokalen Variablen geschrieben werden. Die werden von JRPC3 automatisch in globale konvertiert. So funktioniert der VarFinder auch weiterhin mit dem Originalquelltext wie gehabt. Ich werde auch niemals lokale Variablen im eigentlichen Sourcecode aufgeben, sonst hat man ja überhaupt keinen Durchblick mehr.

Namenskollisionen gibt es dabei auch keine. Es kann gerne einhundertmal "i%" in einhundert Prozeduren verwendet werden. Die bekommen dann jeweils eigene Namen als globale Variablen. Das ist auch der Grund, warum das nur geht, wenn die Namensverkürzung eingeschaltet ist, da es sonst schwer bis unmöglich wäre, die individuellen Namen global eindeutig zu machen.

Beispiel:
declare GlobalVar1%,GlobalVar2$

PROC Proc1

    parameters par%
    declare LocalVar%,ForVar%
    LocalVar%=1
    VAR LocalVar2%=2
    for ForVar%,1,10
    endfor

ENDPROC

PROC Proc2

    parameters par%
    declare LocalVar%,ForVar%
    LocalVar%=1
    VAR LocalVar2%=2
    for ForVar%,1,10
    endfor

ENDPROC

cls
GlobalVar1%=1
GlobalVar2$="2"
proc1
proc2
waitinput
end

wird zu
declare _L_I2%'lokale Variable: LOCALVAR%***PROC1
declare _L_I5%'lokale Variable: LOCALVAR%***PROC2
declare _L_I4%'lokale Variable: LOCALVAR2%***PROC1
declare _L_I7%'lokale Variable: LOCALVAR2%***PROC2
declare _I1%,_S1$

PROC PR1

    declare I3%'For-Laufvariable bleibt lokal
    parameters I1%'Parameter bleibt lokal
    _L_I2%=1
    _L_I4%=2'VAR-Variable behält ihre Zuweisung, ist aber global definiert
    for I3%,1,10
    endfor

ENDPROC

PROC PR2

    declare I3%
    parameters I1%
    _L_I5%=1'LocalVars mit demselben Namen wie in Proc1 haben andere globale Namen
    _L_I7%=2
    for I3%,1,10
    endfor

ENDPROC

cls
_I1%=1
_S1$="2"
PR1
PR2
waitinput
'{ 'end
end
'}

Eins habe ich noch vergessen zu erwähnen: Bei der Nutzung von Klassen wird die Konvertierung in globale Variablen (ebenso wie die in kurze Namen) automatisch ausgeschaltet, weil das sonst zu nicht handelbaren Kollisionen bei der Namensvergabe von Variablen führen würde. Aber das macht nichts, davon merkt man ja nichts, außer dass dann der Geschwindigkeitsvorteil globaler Variablen bei Prozeduraufrufen verlorengeht.

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




RudiB.
Das wäre ja Klasse wenn das so funktioniert. Muss ich unbedingt mal Zeitnah testen....

Gruß Rudi
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
24.10.2022  
 




RudiB.
Wollte eigentlich eine private Nachricht schicken.... Funktioniert scheinbar gerade nicht...

daher jetzt so......

Hast Du Dir jemals schon mein Programm "VarFinder" angeschaut ??
Laut dem Protokoll von XProfan.net wohl eher nicht.
Es wäre schon nett, wenn mal irgendeine Reaktion kommt
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
24.10.2022  
 




Jens-Arne
Reumschüssel
Hallo Rudi,

nein, habe ich, wie ich mit Schande zugeben muss, noch nicht. Mache ich aber sehr gern. Ich finde es aber nicht über die Suche von xprofan.net. Wo muss ich da gucken?

Private Nachrichten übrigens immer gerne an jreumsc@web.de

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
24.10.2022  
 




RudiB.
Hallo Jens-Arne....

...schau mal hier... [...] 

...hierfür wäre eben JRPC3 ideal, weil es sonst grotten-langsam ist...
 
XProfan X4
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
25.10.2022  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

65.646 Betrachtungen

Unbenanntvor 0 min.
Roland Schäffer vor 6 Tagen
Gast.0815 vor 6 Tagen
Georg Teles vor 6 Tagen
H.Brill vor 6 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