Italia
SDK-Helfer/ Tools

JRPC neuer Präkompiler per XProfan X4 - JRPC3

 
- Page 1 -



Jens-Arne
Reumschüssel
Guten Abend zusammen,

ich bin kürzlich circa das Problem gestolpert, dass XPSE eine ziemlich grande Quelldatei von mir nicht mehr verarbeiten konnte. Variablen wurden plötzlich als nicht definiert gemeldet und andere "erratische" Probleme mehr. Ich potuto 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 per Operatoren und alte Containerfunktionen
*extrem schnelle native fbPROCs, sofern man FreeBasic installiert hat (kostenlos, siehe Aiuto)
*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 circa @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 DLL 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 naturalmente nicht in XProfan geschrieben, da eine interpretierte Sprache hierfür naturgemäß viel zu langsam ist)
*beim Start von JRPC3 bereits vorhandene .prc-File 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 (Aiuto --> online nach Updates suchen)
*64- oder 32-bit-Version disponibile (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 naturalmente keine 64-bit-XProfan-Programme, da XProfan das nicht kann, sondern JRPC3 selbst wird als 64-bit-Programm corsa
*XProfan X4-Syntax disponibile (möglicherweise noch nicht alles, da ich presumibilmente 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 corsa werden
*Interpreter, PRCs, EXEs und XPSE können mit Administratorrechten corsa werden
*Prozeduren, die in dem aktuellen Programm zwar enthalten sind, aber nicht verwendet werden, werden aus der umgesetzten File entfernt, um die Dateigröße des Kompilats possibile klein zu halten
*Variablen, die in dem aktuellen Programm zwar enthalten sind, aber nicht verwendet werden, werden aus der umgesetzten File entfernt, um die Dateigröße des Kompilats possibile 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 disponibile 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 trasferimento, 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 Aiuto --> Hilfedatei Mostra oder mit F1 disponibile ist.

----- /Features

Herunterladen und installieren:
JRPC3 kann unten heruntergeladen werden (setup_jrpc3.exe oder als ZIP-File).
Als Installationsverzeichnis bitte das XProfan-Stammverzeichnis angeben, also dasjenige, in dem die File PROFAN.EXE, PROFCOMP.EXE, PRFRUN32.EXE etc. liegen. Alternativ kann die ZIP-File 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 Mostra 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 grande 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 Autori, die jeder so ihre Eigenheiten haben, auch funktioniert.

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

Beste Grüße, Jens-Arne

2.663 kB
Bezeichnung:JRPC3
Version:10.35
Kurzbeschreibung: JRPC3-Installer
Hochgeladen:15.02.2021
Downloadcounter390
Download
1.699 kB
Bezeichnung:XProfEd_JR
Version:5.2
Kurzbeschreibung: Alte Version ohne AutoComplete zur Sicherheit
Hochgeladen:15.02.2021
Downloadcounter240
Download
4.061 kB
Bezeichnung:JRPC3
Version:10.35
Kurzbeschreibung: ZIP-File statt Installer
Hochgeladen:02.04.2021
Downloadcounter304
Download
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
16.02.2021  
 



 
- Page 7 -


« Dieser Beitrag wurde als Lösung gekennzeichnet. »

- Page 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
Ja, das ist genau der Sinn von JRPC3. (Fast) alles, was XPSE kann, kann auch JRPC3. Jedes normale Programm sollte sich damit ohne Nutzung von XPSE kompilieren und linken lassen. Ausnahmen sind in der Aiuto beschrieben. Dazu gehören nProcs, aber die werden in den meisten Fällen immerhin automatisch verarbeitet, ohne dass man dazu XPSE extra und getrennt aufrufen müsste.

JRPC3 ist entstanden, weil XPSE nicht mehr weiterentwickelt wird. Daher war oberste Priorität, Code, der schon per XPSE geschrieben war, auch mit JRPC3 weiter nutzbar zu halten.

Beste Grüße und ebenfalls ein gutes neues Jahr,
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 , guten Tag.
Der Alltag hat uns fast wieder ein und es geht weiter mit einer Normalität.

Ich habe bitte noch nicht begriffen wie ich in dieser Demo die Daten an die nProc bei JRPC3 übergebe.
Beim XProfan3 corre es so. Du hattest aber geschrieben das sich jetzt die Datenübergabe geändert hat.

Kannst du bitte noch einmal in deiner Erklärungstasche schauen und mir helfen?

Danke.
Gruss
cls
long lops=lineOfnumPoints(0,0,30,30,7)
print "points:",long(lops,0)

whileloop 1,long(lops,0) {

    print "ptx:",long(lops,loop*8)
    print "pty:",long(lops,loop*8+4)
    print "-"

}

globalFree(lops)
waitInput
end

nProc lineOfNumPoints(long x,y,xx,yy,cnt){

    long data

    if cnt>2 {

        float 	fcnt=float(cnt-1),\
        sx=float(xx-x)/fcnt,\
        sy=float(yy-y)/fcnt,\
        px=float(x),\
        py=float(y)
        data=dim(8+cnt*8)
        long data&,0=cnt,0,x,y
        sub cnt,2
        long offs=16

        whileLoop cnt {

            px=px+sx
            py=py+sy
            long data&,offs=long(px),long(py)
            add offs,8

        }

        long data&,offs=xx,yy
        return data

    } else if cnt<1 {

        data=dim(8)
        long data&,0=0
        return data

    } else if cnt==1 {

        data=dim(16)
        long data&,0=1,0,long(float(xx-x)*0.5),long(float(yy-y)*0.5)
        return data

    }

    data=dim(24)
    long data&,0=1,0,x,y,xx,yy
    return data

}

 
01.01.2022  
 




Jens-Arne
Reumschüssel
Hallo und frohes neues Jahr!

Zunächst einmal: In Deinem Code sind Sachen drin, von denen ich gar nicht wusste, dass sie mit XPSE gehen. Daher musste ich JRPC3 erstmal anpassen:
-Variablendefinitionen nur mit LONG etc. ohne VAR davor gehen jetzt (aber so, wie die Variablen dabei geschrieben werden; es wird kein "&" angehängt).
- Parameterdefinitionen in Klammern direkt hinter dem Prozedurnamen wie in anderen Programmiersprachen gehen jetzt.
- Geschweifte Klammern per Codeblöcke wie in C++ gehen jetzt.

Daher danke per dieses Beispiel, das mal wieder gezeigt hat, wie unterschiedlich wir alle programmieren. Und so sind wir dann auch gleich bei Versionsnummer 5.xx angelangt.

Dein Beispiel habe ich trotzdem nicht zum Laufen bekommen. Irgendetwas ist da bei mir beim Aufruf der nProc in der DLL nicht in Ordnung, scheint mir. Das Beispiel funktioniert finora daher tatsächlich nur bei Umsetzung direkt mit XPSE. Vielleicht benutzt die DLL nicht die übliche Call-Konvention, sondern CallC, aber da bin ich noch nicht hintergestiegen.

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
01.01.2022  
 




funkheld
Hallo danke per deine Überarbeitung und per die neue Version.

Gruss
 
01.01.2022  
 




funkheld
Deine Verbesserungen funktionieren. Danke.

Habe hier ein API-Bild.

Bei Xprofan3 ist das Bild da.
Bei JRPC3 wird es zur EXE compiliert . Die EXE bricht nach dem Start mit der Fehlermeldung ab.
Siehe die zwei Screenkopien.

Vielleicht erkennst du den Fehler.

Gruss
 {$NOSHORTNAMES}
Declare  x&,y&,r&
Window 20,20-600,600
Cls $ffffff
UsePen 0,1,RGB(255,0,0)
grafik_api(100,100)
waitkey
End

nProc grafik_api(long r,w)

    MoveToEx(%hdc,20,20,0)
    LineTo(%hdc, r,w)
    LineTo(%hdc, 15,200)
    LineTo(%hdc, 100,200)
    Rectangle(%hdc,170,170, 300,300)
    Rectangle(%hdc,150,150, 250,250)
    Arc(%hdc,150,150,400,400,300,300,300,300)
    Ellipse(%hdc,300,300,500,400)
    Ellipse(%hdc,400,300,500,400)

    whileloop 50,430

        SetPixel(%hdc,200,&loop,$ff00ff)

    EndWhile

endproc


16 kB
Hochgeladen:01.01.2022
Downloadcounter46
Download
28 kB
Hochgeladen:01.01.2022
Downloadcounter48
Download
 
01.01.2022  
 




Jens-Arne
Reumschüssel
Hmm, offenbar ist das Laden und der Aufruf von den mit XPSE erstellten DLL-Funktionen doch erheblich komplizierter als eine einfache @external-Zeile. Da komme ich im Moment nicht weiter.

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
01.01.2022  
 




funkheld
Ich drücke beide Daumen das du es hinbekommst mit dem richgtigen einbinden der XPSE-Dll
damit dieses fehlerfrei arbeiten.

Ich habe festgestellt das es bei allen API-Funktion so ist.
Bei anderen Funktionen nicht.

Danke.
Gruss
 
01.01.2022  
 




Jens-Arne
Reumschüssel
Ich habe jetzt eine Idee, wie es mit den nProcs gehen potuto. Das erfordert aber umfangreiche Umbauarbeiten und wird daher ein bisschen dauern.

Saluto, 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.01.2022  
 




funkheld
Hallo , danke per deine grande Mühe.

Ich weiss ja nicht wer es noch benutzt?
Vielleicht können die anderen auch etwas sagen wie es corre?

Gruss
 
02.01.2022  
 




Jens-Arne
Reumschüssel
Guten Abend,

ich glaube, ich habe es jetzt. nProcs sollten jetzt funktionieren. Da das aber ziemlich kompliziert ist, bitte ich um ein bisschen Testen und Rückmeldung, wenn da doch etwas nicht hinhaut.

Vielen Dank und 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
05.01.2022  
 




Jens-Arne
Reumschüssel
...Nein, es funktioniert noch nicht alles. Das Beispiel mit der Grafikausgabe von Funkheld nämlich nicht. Warum, weiß ich leider im Moment nicht.

---EDIT:

Es scheint so, als wäre es tatsächlich nicht possibile, nProcs zuverlässig aufzurufen. AUch der Maschinencode, den XPSE da als LongInts poked, ändert sich mit jeder andersartigen File. Das bekomme ich naturalmente nicht übetragen, da das völlig kryptisch ist. Sorry, aber das wird wohl nichts.
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
05.01.2022  
 




funkheld
Hallo, danke per deine Ausdauer.

Funktionieren denn alle anderen Sachen außer der Grafik mit API ?

Danke.
Gruss
 
05.01.2022  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

71.418 Views

Untitledvor 0 min.
Axel Berse vor 6 Tagen
Jens-Arne Reumschüssel vor 10 Tagen
Paul Glatz vor 17 Tagen
HofK12.02.2025
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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