SDK-Helfer/ Tools | | | | - 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.584 kB | | Bezeichnung: | JRPC3 | | Version: | 10.29 | | Kurzbeschreibung: | JRPC3-Installer | | Hochgeladen: | 15.02.2021 | | Downloadcounter: | | | | Download | | | | 1.699 kB | | Bezeichnung: | XProfEd_JR | | Version: | 5.2 | | Kurzbeschreibung: | Alte Version ohne AutoComplete zur Sicherheit | | Hochgeladen: | 15.02.2021 | | Downloadcounter: | | | | Download | | | | 3.777 kB | | Bezeichnung: | JRPC3 | | Version: | 10.29 | | Kurzbeschreibung: | ZIP-File statt Installer | | Hochgeladen: | 02.04.2021 | | Downloadcounter: | | | | 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 2 - |
| | « 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 X4XProfan 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 | Noch ein Wort zur File jrpc3.hd mit den API-Headerdefinitionen:
Diese enthält finora folgende File:
- comdlg.ph - commctrl.ph - lzexpand.ph - messages.ph - richedit.ph - shellapi.ph - structs.ph - windows.ph
Wenn jemand weitere Definitionen dazubasteln möchte, dann immer gerne her damit! Das geht ganz einfach:
Jede Zeile enthält eine Definition (links ohne "~"), getrennt durch "§#§" ("|" geht nicht, weil es Definitionen gibt, die dieses Zeichen enthalten, wie z.B. ID_PSREBOOTSYSTEM=~ID_PSRESTARTWINDOWS | 1).
Aus WM_LBUTTONDOWN=$0201 wird also WM_LBUTTONDOWN§#§$0201
Es sind auch weitere Headerdefinitionen innerhalb des rechten Teils erlaubt (dann mit "~"), wie z.B. CFM_EFFECTS§#§~CFM_BOLD | ~CFM_ITALIC | ~CFM_UNDERLINE | ~CFM_COLOR | ~CFM_STRIKEOUT | ~CFE_PROTECTED | ~CFM_LINK
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.04.2021 ▲ |
| |
| | Michael W. | Ups. Kann es sein, das dir dies entgangen ist? Gibts ab X2.
Ich verwende es ausgiebig.
Neue Variablensyntax
--------------------------------------------------------------------------------
Nicht nur der "Unterbau" muss auf neue Variablentypen-Typen vorbereitet werden, sondern unter anderem auch die Syntax.
Bislang wir der Typ einer Variablen wie im klassischen Basic durch ein Postfix, dem letzten Zeichen des Variablennamens, definiert: !, %, &, $ oder #. Der Parser war also genau darauf ausgelegt und erkannte und unterschied Variablen an diesem Postfix.
Nun stellte sich die Frage, was per Postfixe potuto man den noch benutzen? Schließlich sollen die Zeichen auf der Tastatur leicht erreichbar sein. Da blieben noch solche Zeichen wie °, § und €. Ein Problem: Auf internationalen Tastaturen gibt es die Zeichen teilweise nicht. Das Hauptproblem: Danach ist aber Schluß.
Die jetzige Lösung: Abkehr vom Postfix. Dazu musste der Parser komplett umgeschrieben werden und auch noch einige Befehle und Funktionen, die Variablennamen als Parameter verlangen (etwa CLEAR, DISPOSE, DECLARE, PARAMETERS, CLASSOF, SIZEOF, etc.). Außerdem braucht es per Variablennamen ohne Postfix noch eine neue Syntax, um den Typ zu bestimmen. Und 100%ig kompatibel zur bisherigen Syntax sollte es auch sein. So sieht die Lösung aus:
Declare <Typ> <Name>[, <Name>[,...]], <Typ Name>, ...
Parameters <Typ> <Name>[, <Name>[,...]], <Typ Name>, ...
Var <Typ> <Name> = <Wert>
Die bisherigen Typen heißen STRING, INTEGER, LONGINT, FLOAT und MEMORY (und können auch mit INT, LONG und MEM abgekürzt werden). Statt FLOAT kann man auch DOUBLE schreiben.
DECLARE MEMORY b, STRING s, LONGINT l, FLOAT f
Bei mehreren Variablen gleichen Typs direkt hintereinander reicht die einmalige Nennung des Typs:
DECLARE INT x, y, z, STRING Zeile1, Zeile2
Der Typ einer Variablen wird entweder durch ein Postfix oder durch einen Typkennzeichner bestimmt. Beides zusammen geht nicht.
Neue und bisherige Syntax können beliebig gemischt werden. Zu beachten ist naturalmente, dass bei Variablen mit Postfix dieses Zeichen Teil des Namens ist. So sind ja finora schon X$, X&, X%, X! und X# unterschiedliche Variablen, die sich durch den Postfix unterscheiden. Also werden künfig auch STRING X und X$ zwei verschiedene Variablen sein. Da ein Variablenname nicht doppelt vorkommen darf, wird es naturalmente nicht gleichzeitig einen STRING X und einen LONGINT X geben dürfen.
(Für Nutzer anderer Programmiersprachen eine Selbstverständlichkeit.)
WICHTIG: Für die Elemente einer Struktur oder einer Klasse bleiben die bisherigen Regeln bestehen. Hier können vorerst keine Typbezeichner verwandt werden.
|
| 23 kB | | Bezeichnung: | angezeigtes Fenster | | Kurzbeschreibung: | neue Declare-Syntax | | Hochgeladen: | 03.04.2021 | | Downloadcounter: | | | | Download |
| | | System: Windows 8/10, XProfan X4 Programmieren, das spannendste Detektivspiel der Welt. | 03.04.2021 ▲ |
| |
| | Jens-Arne Reumschüssel | Guten Morgen,
ich verwende diese neue Syntax tatsächlich nur dann, wenn es unbedingt sein muss (bei Quadints z.B.), weil ich es mag, wenn man den Variablen "ansieht", was sie sind. Aber berücksichtigt habe ich das naturalmente eigentlich. Ich habe nur kaum Code zum Testen. Schicke mir bitte mal einen Beispielcode, bei dem JRPC3 aussteigt, dann hoffe ich, dass das schnell zu beheben sein sollte (gerne per pm: jreumsc@web.de, oder direkt hier im Foro).
Und danke per die Rückmeldung! Das ist sehr hilfreich, den Fehler bekommen wir bestimmt geregelt.
Danke und Saluto, Jens-Arne |
| | | XProfan X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 03.04.2021 ▲ |
| |
| | Jens-Arne Reumschüssel | Ok, ich habe schonmal das eine oder andere selbst gefunden. Das hier:
declare long i,o,u,o%,long a
cls
i=1
o=2
u=3
o%=4
a=5
Var String Namen[]="Maria","Karl","Herbert"
print i,o,u,o%,a,namen[1]
waitinput
end
funktioniert jetzt. Installer und ZIP-File wurden oben aktualisiert.
Gibt es noch andere Probleme mit der neuen Variablensyntax?
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 | 03.04.2021 ▲ |
| |
| | Jens-Arne Reumschüssel | Dank Michael Wodrich, der mir ein paar Beispielcodes geschickt hat, gibt es eine ganze Reihe essentieller Verbesserungen:
· verschachtelte Prozeduren jetzt possibile · Headerdefinitionen in DEF-Funktionen jetzt possibile · mit ":" getrennte Anweisungen werden nun korrekt verarbeitet (selbst solche Sachen wie declare x%:var long y=1 oder gar declare x%,y%:print "Geschreibsel") · WIDESTRING als Variablentyp hinzugefügt · MOVELISTPROC eingebaut · XProfan-Inlineassembler jetzt possibile (innerhalb desselben aber keinerlei Codeprüfungen)
Vielen Dank per diese tolle Mithilfe! Die Downloaddateien oben sind aktualisiert (V1.57a).
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 | 03.04.2021 ▲ |
| |
| | Michael W. | Danke, und kurzer Nachtrag.
Avira hatte wohl eine zu strenge Heuristik genutzt (Vorhersage auf mögl. Virenvarianten).
Und ich war zu doof, bei einer heruntergeladenen EXE einfach mal in die Eigenschaften der File zu schauen.
Sicherheit: Die File stammt von einem anderen Computer..... [Zulassen]
Ich bin es halt gewohnt, EXEs aus ZIPs auszupacken und ungehindert durchzustarten. |
| | | | |
| | p.specht
| XPSE war gebaut bis XProfan-11.2a. Mit Klimmzügen und dem Pre-precompiler von Jens-Arne per FOR-Schleifen lief er in vielen Fällen bis X3.
Da ich bisher nur "drüberinstalliert" hatte, kann ich eigentlich nicht sagen was jrpc3 zum Funktionieren eigentlich braucht. - Ist XProfan-X4 die Basis, und/oder will jrpc3 (wie xpse) als eigenständige, nur an XProfan angelehnte Sprache verstanden werden?
Eine Liste der Abhängigkeiten von jrpc3 wäre hilfreich. Was genau brauche ich mindestens per ... - Programmentwicklung 32bit bzw. Entwicklung 64bit? - Erstellung compilierter EXEn 32bit bzw. 64bit? - blosses Laufenlassen einer EXE-Anwendung auf Anwender-PCs?
Und: Gibt es Mindestanforderungen an die Windows-Version?
LG
P.S.: Ihr merkt: Ein Narr kann mehr fragen als 10 Weise beantworten können... |
| | | Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 04.04.2021 ▲ |
| |
| | Jens-Arne Reumschüssel | Naja, das Ziel war es erst einmal, XProfan-Programme, die per XPSE zu grande geworden waren, wie mit XPSE umsetzbar zu machen. Dabei ist naturalmente dann die neue Syntax von XProfan bis X4 dazugekommen, soweit ich diese bisher überblickt habe. D.h. "Entwicklung 64bit" bzw. "Erstellung compilierter EXEn 64bit" ist damit nicht gemeint, weil XProfan finora nur 32bit kann.
Zur Benutzung ist an Abhängigkeiten nichts nötig außer XProfan, wobei die Version von XProfan dabei ziemlich egal sein sollte. Wenn man nPROCs und die XPSE-Assemblerfunktionen nutzen möchte, ist auch XPSE nötig (kann aus JRPC3 heraus aufgerufen werden). XProfan-Assembler corre ja nun seit heute.
Eine Mindest-Windows-Version sollte es eigentlich auch nicht geben, da die 32bit-Version von JRPC3 presumibilmente auch mit Windows XP corre. Ich benutze aber Windows 10 mit 64bit und habe finora keine andere Umgebung getestet. Die DLL per die Variablenverfolgung ist bewusst nur 32bittig, damit sie in jeder Windows-Umgebung corre. Außerdem wird diese aus dem XProfan-Programm heraus beschickt, dessen Variablen man verfolgen möchte, sodass sie ohnehin nicht 64bittig sein kann.
Wie gesagt: Ich wollte so etwas wie XPSE in etwas moderner, nicht mehr. Ich habe seit Ewigkeiten alles in XPSE-Syntax geschrieben, und es ist fast unmöglich, das wieder auf reinen Profan-Code zurückzubauen, selbst wenn das eigentlich nur "Kleinigkeiten" sind. Aber davon eine unglaubliche Menge.
Wo ich nun schon einmal dabei war, war ein weiteres Ziel von mir, vernünftige Fehlermeldungen mit Angaben zu Quelldatei, Prozedur und Zeile zu erhalten. Die bekommt man weder von XProfan selbst, noch von XPSE. Das ist eine der grande Stärken von JRPC3, denke ich, und solche Winzigkeiten wie die, ein getestetes Programm zur Not mit einem Tastendruck abschießen zu können, wenn es nicht mehr reagiert, es mit Kommandozeilenparametern ausführen zu können, wenn man ein Programm testet, das diese nutzt, und nicht zuletzt sich Fehler direkt in XProfEd Mostra lassen zu können, erleichtern das Leben ungemein.
Das sind die wesentlichen Ziele dieses Projekts. Niemand braucht es zum Überleben, aber es macht einiges sehr viel angenehmer. Jedenfalls, wenn es am Ende mal so funktioniert, dass es auch alle verwenden können. Ein erster großer Schritt dahin ist heute getan worden. Wenn es weitere Fehler gibt, die Euch sofort ins Auge springen, in die ich aber noch nie hineingelaufen bin, wäre ich per eine kurze Nachricht extrem dankbar. Michael Wodrich hat mir heute diverse Problemchen vorgesetzt, von deren Existenz ich nicht einmal etwas ahnte, aber das war trotzdem an einem Nachmittag in den Griff zu bekommen.
Beste Grüße und frohe Ostern, Jens-Arne |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 04.04.2021 ▲ |
| |
| | RudiB. | Hallo Jens-Arne,
habs jetzt auch mal kurz getestet. Habe in vielen Quelltexten noch alte Profan-Syntax und nutze daher die Profalt.inc....und siehe da...
Konnte bisher nicht weiter testen, weil da stoppt ja die Fehlerabfrage. Hab ich da was überlesen oder warum durchläuft es nicht den ganzen Quellcode?
Will jetzt nicht alles umschreiben müssen, um weiter zu testen.... |
| | | | |
| | Jens-Arne Reumschüssel | ...Ich bin dran. Dein Problem mit der alten Profan-Syntax ist bereits gelöst. Es gibt aber weitere, sodass ich das noch nicht hochladen kann. |
| | | XProfan X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 04.04.2021 ▲ |
| |
| | Jens-Arne Reumschüssel | ...Ok, es ist vollbracht.
Die Include-File "PROFALT.INC" ist nicht mehr nötig und sollte nicht mehr verwendet werden. Stattdessen ist die neue Compilerdirektive {$USEOLDPROF} zu verwenden. Diese schaltet die automatische Umsetzung der alten Operator-Funktionen in die aktuellen Operatoren ein.
Nachtrag: PROFALT.INC kann im Code stehenbleiben. Sie wird ignoriert und automatisch die entsprechende Compilerdirektive aktiviert. So bleibt der Code kompatibel zum nativen Profan.
XProfEd_JR ist nun im Installer und in der ZIP-File enthalten.
Ich wünsche einen schönen Ostersonntag, Jens-Arne |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 04.04.2021 ▲ |
| |
| | RudiB. | Ciao,
...und der nächste Fehler ???
gruß Rudi |
| | | | |
|
AnswerTopic-Options | 64.052 Views |
ThemeninformationenDieses Thema hat 8 subscriber: |