SDK-Helfer/ Tools | | | | - 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 | | Ladeanzahl: | | | | Herunterladen | | | | 1.699 kB | | Bezeichnung: | XProfEd_JR | | Version: | 5.2 | | Kurzbeschreibung: | Alte Version ohne AutoComplete zur Sicherheit | | Hochgeladen: | 15.02.2021 | | Ladeanzahl: | | | | Herunterladen | | | | 3.777 kB | | Bezeichnung: | JRPC3 | | Version: | 10.29 | | Kurzbeschreibung: | ZIP-Datei statt Installer | | Hochgeladen: | 02.04.2021 | | Ladeanzahl: | | | | 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 9 - |
| | « 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 X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 24.09.2022 ▲ |
| | |
| | funkheld | ---------------------------- Autor: p. specht (---.nat.highway.telekom.at) Datum: 09.01.22 17:44
Ich bin 2 1/2 Monate älter als Heinz, aber bedeutend verkalkter. Die Hoffnung auf XProfan X5 hält mich jung ---------------------------
XProfan X5 hält dich jung. Aber hier mal ein bisschen mit Nachdenken helfen wie man die Lage von XProfan4 verbessern kann schaffst du nicht....... und steigst aus : -------------------------- Also ich steige an dieser Stelle aus: -------------------------- |
| | | | |
| | RudiB. | Also...Jetzt muss ich auch mal was schreiben.... Profan heißt übersetzt "EINFACH" Ich denke mal das Roland damit einen Grundstock schaffen wollte um Programmierern einen leichten Einstieg in eine einfache und trotz alledem mächtige Programmiersprache zu geben. PROFAN == EINFACH Ich wüsste jetzt nicht, was man mit PROFAN (jetzt ja XPROFAN) nicht realisieren kann. Das muss nun wirklich nicht mehr aufgeblasen werden... Da kann man ja gleich auf C#,C++,Delphi,Java.....oder sonstiges umsteigen, der Performance wegen.... oder aus sonstigen Gründen. |
| | | Xprofan X4 Rudolf Beske / München
Hardware: NB Intel I9 - 16GByte RAM | 10.01.2022 ▲ |
| |
| | RudiB. | Dann ist es aber nicht mehr so Profan.......Einfach !! |
| | | | |
| | p.specht
| Ach ja, die eingebaute REGEX-Syntax könnte man auch als eigene Sprache werten. Und die IDEs wie LemonED haben ihre eigene MACRO-Syntax. Natürlich kommen auch noch die Compilerdirektiven dazu.
XProfan-X4 selbst kennt knapp 2000 Suchbegriffe in seinem Hilfe-System. Sorry, mehr passt nicht in mein Hirn. Ich finde, XProfan sollte Spaß machen und nicht als Selbstzweck dienen. Extra-einfach, XProfan halt! |
| | | Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 11.01.2022 ▲ |
| |
| | funkheld |
XProfan-X4 selbst kennt knapp 2000 Suchbegriffe in seinem Hilfe-System. Sorry, mehr passt nicht in mein Hirn.
Es reicht eigentlich XProfanx4 und brauchen kein XProfanx5.
Man kann bei XProfanx4 einen feinschliff vornehmen , damit meine ich vielleicht Vorschläge reinbauen die einen das programmieren erleichtern und nicht gleich mit ASM loslegen muss.
Ich mag Erweiterungen die jens-arne erfindet. Und dieses FreeBasic was er jetzt mit verwendet ist Super. Man kann also mit dem Basic tolle schnelle Erweiterungen machen für das XProfanx4 |
| | | | |
| | funkheld |
Hallo Jens-Arne.
Jetzt geht es mit dem dib-bild. Das Bild hat eine größe von 700x700x3
Füllen mach ich hier mit 460000 mal mit der Farbe Blau.
Super schnell 460000 mal...mit einem Augenzwinkern ist das Bild gemalt.
Man kann in der Schleife auch " FOR test = 0 TO g -100000 step 3" zb nehmen.
Gruss
{$FBSYNTAX on}
declare dib&,array&,groesse&,hoehe&,ende&,bild&
DEF CreateDIB(2) !"dib","CreateDIB"
DEF FreeDIB(1) !"dib","FreeDIB"
DEF DrawDIB(4) !"dib","DrawDIB"
DEF CloneDIB(1) !"dib","CloneDIB"
dib&=usedll("dib.dll")
fbProc erzeugebild(byval b As Integer, ByVal g As Integer) As Integer Export
Dim test As Integer
FOR test = 0 TO 1400000 step 3
poke byte,test+b,&h00
poke byte,test+b+1,&h00
poke byte,test+b+2,&hff
next test
return 0
endproc
fbProc erzeugebildi(byval b As Integer, ByVal g As Integer) As Integer Export
Dim test As Integer
FOR test = 0 TO 1400000 step 3
poke integer,test+b,&h0000ff
next test
return 0
endproc
array&=CreateDIB(700,700)
groesse&=700*700*3
hoehe&=700
Window 20,20-750,780
Cls RGB(255,255,255)
bild&= Long(array&,40)
erzeugebildi(bild&,groesse&)
DrawDIB(%hdc,10,10,array&)
WaitKey
FreeDIB(dib&)
End
|
| | | | |
| | funkheld |
Hallo Jens-Arne.
Ich habe jetzt mal mit XProfanx4 ein Screen von Freebasic geöffnet zum Zeichnen und daneben das Profan-Windows. Es funktioniert.
Wird sauber zu einer DLL kompiliert.
Danke.
{$FBSYNTAX on}
fbProc erzeugescreen() As Integer Export
dim a as string
Screenres(256,256)
a="Linie"
TextOut(%HDC,50,80,a,len(a))
Line (64,128)-(192,128)
a="Rechteck"
TextOut(%HDC,50,110,a,len(a))
Line (64,64)-(192,192),,B
a="Kreis"
TextOut(%HDC,50,140,a,len(a))
Circle (128,128),91
return 0
endproc
Window 20,20-200,400
Cls RGB(255,255,255)
erzeugescreen()
WaitKey
End
|
| | | | |
| | funkheld |
FreeBasic Grafik mit Profan-Button.
Gruss
{$FBSYNTAX on}
Declare Handle btn1, btn2,btn3,btn4,btn5
Declare Long ende
ende = 0
fbProc erzeugescreen() As Integer Export
Screenres(256,256)
return 0
endproc
fbProc linie() As Integer Export
Line (64,128)-(192,128)
return 0
endproc
fbProc rechteck() As Integer Export
Line (64,64)-(192,192),,B
return 0
endproc
fbProc circles() As Integer Export
Circle (128,128),91
return 0
endproc
fbProc clss() As Integer Export
cls
return 0
endproc
Window 300, 400
btn2 = Create("Button", %HWnd, "linie", 10, 35, 80, 25)
btn3 = Create("Button",%HWnd, "rechteck", 10, 60, 80, 25)
btn4 = Create("Button",%HWnd, "circles", 10, 85, 80, 25)
btn5 = Create("Button",%HWnd, "cls", 10, 110, 80, 25)
erzeugescreen()
WhileNot ende
WaitInput
If Clicked(btn2)
linie()
endif
If Clicked(btn3)
rechteck()
EndIf
If Clicked(btn4)
circles()
EndIf
If Clicked(btn5)
clss()
EndIf
EndWhile
End
|
| | | | |
| | funkheld |
XProfanX4 mag ich wegen der Grafik die man da einfach herstellen kann. Wenn ich aber Float brauche in der Grafik komme ich mit dem Profan unter Zeitdruck. Dieses FreeBasic mit Profan zusammen hilft mir Super.
Zeitmessung mit meinem Notebook 2,5 GHz :
FreeBasic : 1000000 mal : a= sin(b)* 3.145678 / 0.345 Mehrmal gestoppt mit ca 43 Millisekunden
Gruss
{$FBSYNTAX on}
Declare Handle btn1, btn2,btn3,btn4,btn5
Declare Long ende
ende = 0
fbProc erzeugescreen() As Integer Export
Screenres(400,256)
return 0
endproc
fbProc zeitmessung() As Integer Export
DIM AS DOUBLE StartZeit, EndZeit
dim a as single
dim b as integer
StartZeit=TIMER
for b=0 to 1000000
a=sin(b)* 3.145678 / 0.345
next b
EndZeit=TIMER
PRINT "Das hat ";
PRINT USING"#######.###" ;(EndZeit-Startzeit)*1000;
PRINT " Millisekunden gedauert"
return 0
endproc
fbProc clss() As Integer Export
cls
return 0
endproc
Window 300, 400
btn2 = Create("Button", %HWnd, "zeit", 10, 35, 80, 25)
btn3 = Create("Button",%HWnd, "", 10, 60, 80, 25)
btn4 = Create("Button",%HWnd, "", 10, 85, 80, 25)
btn5 = Create("Button",%HWnd, "cls", 10, 110, 80, 25)
erzeugescreen()
WhileNot ende
WaitInput
If Clicked(btn2)
zeitmessung()
endif
If Clicked(btn3)
EndIf
If Clicked(btn4)
EndIf
If Clicked(btn5)
clss()
EndIf
EndWhile
End
|
| | | | |
| | Jens-Arne Reumschüssel | Hallo zusammen,
ich möchte wirklich niemandem suggerieren, XProfan wäre jetzt durch JRPC3 irgendwie komplizierter oder weniger schön nutzbar geworden. Noch einmal: Niemand muss native Prozeduren verwenden, weder nProcs zu XPSE-Zeiten, noch fbProcs jetzt. XProfan bleibt XProfan, also einfach. Wenn man aber einmal wirklich Geschwindigkeit braucht, geht das jetzt ganz einfach. Ginge es nicht, müsste man in eine ganz andere Sprache ausweichen. *Das* ist der Sinn von fbProcs. Es besteht auch keine Gefahr, dass jetzt jemand ganz zu FreeBasic wechseln könnte, weil damit die Entwicklung ganzer Programme ganz und gar überhaupt nicht "einfach" ist. Die simple Zeile "cls" in XProfan würde in FreeBasic sicher hundert Zeilen und mehr erfordern, weil eine Fensterklasse definiert und ein Messagehandling eingerichtet werden müsste, alles "per Hand". fbProcs verbinden einfach nur das Geniale von XProfan (also das "Einfache") und die Geschwindigkeit von Sprachen, die direkt in Maschinensprache übersetzt werden. Ich persönlich finde, dass diese Verbindung unschlagbar ist und XProfan sogar neues Leben einhauchen kann (die Beispiele von Funkheld sind beredtes Zeugnis hierfür); im Moment sind wir ja leider nicht mehr so viele.
In der neusten Version von JRPC3 kann nun übrigens mit "f" direkt die Zeile mit dem ersten Fehler in einer fbProc angezeigt werden, den der FreeBasic-Compiler auswirft, wenn man sich da verbastelt hat.
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 | 15.01.2022 ▲ |
| |
| | funkheld | Hallo, danke für deine Neue Version von jrpc3 .
Gruss |
| | | | |
| | RudiB. | Hallo Jens-Arne,
es geht hier wirklich nicht gegen Dich und Deine Bemühungen. XPSE ist wirklich gut. JRPC3 ist wirklich gut. Jedoch muss ich in beiden Fällen mir eine neue Syntax aneignen / hinzufügen / lernen. Ich schätze ja sehr jede Bemühung dahin gehend Xprofan zu verbessern. Vielleicht gerade der Performance wegen. Ich weiß nicht ob Roland mir da Recht geben würde, ich glaube er wollte etwas "Einfaches"...sonst hätte er wohl bloß geschrieben ....lernt DELPHI.....ist schneller.
Wie auch immer, keine Kritik an Deinen Bemühungen....mach weiter so. Find ich GUT.... Wie auch immer, das muss jeder in diesem Forum für sich selbst entscheiden |
| | | | |
|
AntwortenThemenoptionen | 64.380 Betrachtungen |
ThemeninformationenDieses Thema hat 8 Teilnehmer: |