Español
SDK-Helfer/ Tools

JRPC neuer Präkompiler para XProfan X4 - JRPC3

 
- Página 1 -



Jens-Arne
Reumschüssel
Bueno Abend zusammen,

Yo bin kürzlich encima el problema gestolpert, dass XPSE una bastante große Quelldatei de No mehr verarbeiten podría. Variables fueron plötzlich como no definiert gemeldet y otro "erratische" Problemas mehr. Yo podría me vorstellen, dass dies daran liegt, dass XPSE Schlüsselworte en Windows-Atoms verwaltet. Como es irgendwann Schluss (en algo zwischen 60.000 y 70.000 Stück, wobei uno bedenken muss, dass XPSE el Windows-API con vorhält). Tal vez lo aber auch algo bastante más, Yo de hecho puede no en el "Maschinenraum" de XPSE schauen.

Jedenfalls blieb me, como XPSE no mehr gepflegt se, nichts más übrig, como el nachzubauen. Das Ergebnis es JRPC3.

----- Features:

*vernünftige Meldung de Fehlern
*direkte Anzeige des Programmablaufes en XProfEd (sofern el unten erhältliche aufgebohrte XProfEd verwendet se)
*Umsetzung el alten Profano-Syntax para Operatoren y alte Containerfunktionen
*extremo schnelle native fbPROCs, sofern uno FreeBasic installiert ha (libre, siehe Ayuda)
*con fbPROCs kann zudem Inline-Ensamblador auch antes XProfan X4 realisiert voluntad
*extremo schnelle native pbPROCs, sofern uno PureBasic installiert ha
*Echtzeitverfolgung de Variableninhalten
*einfache Zeitmessungen en el Programmablauf
*Profano-Kompilerdirektiven trabajo endlich vernünftig (z.B. Verschachtelung)
*eingebettete Variables trabajo auch con Arrays
*el meisten WIN32-API-Características son ya vordefiniert mitgeliefert
*API-Aufrufe encima @external(...) voluntad automáticamente en @call(...)-Aufrufe umgesetzt
*Einrückungsanalyse para Finden de vertrackten Verschachtelungsfehlern
*Klammeranalyse para Finden de vertrackten Klammerfehlern
*ENUMERATE-Funktionalität
*Assert a Fehlerkontrolle
*lo puede beliebige DLL en el XProfan-EXE integriert voluntad, sodass ellos no con ausgeliefert voluntad necesario (siehe {$WrapDll})
*einfaches Killen de con JRPC3 gestarteten Programmen (interpretiert, .prc comenzó, .exe comenzó)
*extremadamente rápido (y por lo tanto natürlich no en XProfan geschrieben, como una interpretierte Lingua esta naturgemäß viel a langsam es)
*beim Start de JRPC3 ya vorhandene .prc-Archivos puede para Starten y Linken genutzt voluntad (lo se una Referencia adecuado, dass es una altes Kompilat es)
*el Profano-Compiler kann a Beschleunigung con hoher Prozessorpriorität aufgerufen voluntad
*eingebauter Actualización-Checker con Descargar, si lo una Actualización son (Ayuda --> online después de Updates suchen)
*64- oder 32-bit-Versión verfügbar (simplemente JRPC3_64.exe oder JRPC_32.exe como Interpreter en XProfEd hinterlegen [Optionen --> Allgemeine Einstellungen] y JRPC3 con F7 starten) - Achtung, el 64-bit-Versión producido natürlich no 64-bit-XProfan-Programas, como XProfan el no kann, pero JRPC3 incluso se como 64-bit-Programa ausgeführt
*XProfan X4-Syntax verfügbar (möglicherweise todavía no alles, como Yo vermutlich no alles su benutze, pero yo habe mich en Vollständigkeit bemüht - jedenfalls son z.B. HASH-Arrays y QUADINTs esta)
*Interpreter, PRCs y EXEs puede con Kommandozeilenparametern ausgeführt voluntad
*Interpreter, PRCs, EXEs y XPSE puede con Administratorrechten ausgeführt voluntad
*Prozeduren, el en el aktuellen Programa zwar enthalten son, pero no verwendet voluntad, voluntad de el umgesetzten Expediente lejos, a Dateigröße des Kompilats möglichst klein a halten
*Variables, el en el aktuellen Programa zwar enthalten son, pero no verwendet voluntad, voluntad de el umgesetzten Expediente lejos, a Dateigröße des Kompilats möglichst klein a halten y el Speicherverbrauch a optimieren
*nPROCs de XPSE voluntad automáticamente con XPE a uno DLL umgesetzt y el Aufrufe el nPROCs en el Programa entsprechend adaptado, sofern XPSE disponible es
*fast alles de XPSE funktioniert auch en JRPC3 ({$NOERR}, {$(PRE)BATCH}, {$PUSHKEYWORD}, Interpreter, Runtime y Compiler festlegen, Shorties, ...)
*XProfEd_JR con Ver código fuente-AutoComplete
*XProfEd_JR con Ver código fuente-Memory-Función (Markierungen, a denen zurückgesprungen voluntad kann)

Einschränkungen:
-kein XPSE-Inline-Ensamblador, wohl aber XProfan-Inline-Ensamblador (en él allerdings no Prüfungen en Korrektheit des Codes)
-ABER: uno kann XPSE de JRPC3 heraus aufrufen, sodass esta Funktionalität weiterhin verfügbar es, sofern uno XPSE besitzt (neuer Shorty: {$x})
-Variables, el en uno Procedimiento no deklariert son, pero "aus el aufrufenden Procedimiento übernommen werden", son standardmäßig no zugelassen (XProfan erlaubt el, aber así algo es genauso tödlich como GOTO-Anweisungen). Bitte todos a nutzenden Inputs como Parámetro transferencia, y si algo de el aufrufenden Programmteil verändert voluntad muss, beim Aufruf como Parámetro z.B. @addr(x&) uso y el Procedimiento parámetros x# y LONG x#,0=y& nutzen.
Wenn uno aber necesariamente "vererbte" Variables nutzen möchte, puede ser dies con el Kompilerdirektive {$Declarar...} tun.

*como Hommage a XPSE lautet el Endung el Ausgabedatei ".enh3"

Un genauere Erläuterung el individual Features es el chm-Hilfedatei a entnehmen, el en el Programa bajo Ayuda --> Hilfedatei Mostrar oder con F1 verfügbar es.

----- /Features

Descargar y installieren:
JRPC3 kann unten heruntergeladen voluntad (setup_jrpc3.exe oder como ZIP-Expediente).
Als Installationsverzeichnis Por favor, el XProfan-Stammverzeichnis angeben, also dasjenige, en el el Archivos PROFAN.EXE, PROFCOMP.EXE, PRFRUN32.EXE etc. mentira. Alternativ kann el ZIP-Expediente heruntergeladen y deren Inhalt manuell en el XProfan-Stammverzeichnis kopiert voluntad.

Einrichtung:
JRPC3_64.exe oder JRPC_32.exe como Interpreter en XProfEd hinterlegen [Optionen --> Allgemeine Einstellungen] y JRPC3 con F7 starten.

Alle Befehle son con el Befehl "h" como "Hilfe" abrufbar y debería selbsterklärend ser.

Für viele erweitere Features, el XProfEd betreffen, como z.B. jenes, el Línea, en el una Fehler auftrat, direkt en XProfEd Mostrar a puede, es el mitinstallierte XProfEd_JR erforderlich. Dafür muss uno also XProfEd_JR.exe en lugar de XProfEd.exe como Editor benutzen. Als "goody" hay dazu, dass beim Auf- y Zufalten de Programmen una Fortschrittsanzeiger integriert es (el kann en großen Programmen sí bekanntlich una bisschen dauern).

Lo mag ser, dass todavía no alles perfekt funktioniert. Yo Por favor, esta en Nachsicht. Mi  Programas dejar se umsetzen, aber el muss todavía largo no heißen, dass dies con Programmen otro Autores, el cada así ihre Eigenheiten haben, auch funktioniert.

Fehlermeldungen y Verbesserungsvorschläge gerne a jreumsc@web.de oder hier en el Foro.

Beste Grüße, Jens-Arne

2.584 kB
Bezeichnung:JRPC3
Versión:10.29
Kurzbeschreibung: JRPC3-Installer
Hochgeladen:15.02.2021
Ladeanzahl363
Descargar
1.699 kB
Bezeichnung:XProfEd_JR
Versión:5.2
Kurzbeschreibung: Alte Versión sin AutoComplete a Sicherheit
Hochgeladen:15.02.2021
Ladeanzahl225
Descargar
3.777 kB
Bezeichnung:JRPC3
Versión:10.29
Kurzbeschreibung: ZIP-Expediente en lugar de Installer
Hochgeladen:02.04.2021
Ladeanzahl292
Descargar
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
16.02.2021  
 



 
- Página 22 -


« Dieser Contribución wurde como Solución gekennzeichnet. »

- Página 15 -



Jens-Arne
Reumschüssel
Lo son una neue Versión, el anders con el internen Messagehandling umgeht. Bitte probier el veces de. Tal vez el problema así Fijo.
 
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
Nichts einfacher como el:

declarar zahlen#,i%

pbPROC multiply(*zahlen)
protected i.i
for i=0 to 999
PokeL(*zahlen+(i*4),PeekL(*zahlen+(i*4))*6)
next i
ENDPROC

cls
dim zahlen#,1000*4
for i%,0,999
long zahlen#,(i%*4)=rnd(10000)+1
endfor 'i%
for i%,0,9 'el ersten zehn Originalzahlen Mostrar
imprimir @long(zahlen#,i%*4)
endfor 'i%
multiply(zahlen#)
imprimir "--- con 6 multipliziert:"
for i%,0,9 'el ersten zehn multiplizierten Pagar Mostrar
imprimir @long(zahlen#,i%*4)
endfor 'i%
waitinput
disponer zahlen#
end

Tal vez Yo mich unglücklich ausgedrückt. Lo puede natürlich todos erdenklichen "normalen" Variablentypen a una pbPROC transferencia voluntad, sólo no todos su encima Shared. Mit "normal" mi Yo, dass Profano-propio Sondersachen como Hash-Variables kein direktes Pendant en PB haben y por lo tanto no übergreifend verwendet voluntad puede. Aber alles de integer encima float, single, pointer usw. puede ser natürlich benutzen. Man muss sólo el Variablentyp en PB igual wählen. Also para Float:

declarar f!

pbPROC MultiplyFloat(*f)
protected f.d ;muss .d para double ser, ".f=float" en PB entspricht "single" en XProfan
f=PeekD(*f)
f=f*6
PokeD(*f,f)
ENDPROC

cls
f!=2.34561
MultiplyFloat(@addr(f!))
imprimir f!
waitinput
end

Lebenswichtig a wissen es, dass Parámetro, el a una DLL-Función transferencia voluntad, siempre genau 4 Bytes haben (el gilt auch para una potentiellen Rückgabewert!). Das bedeutet, dass uno z.B. Integer-Pagar direkt transferencia kann, Float-Pagar pero no, porque el haben 8 Bytes. Deshalb necesario wir en el letzten Ejemplo con el Adresse el Float-Variables trabajo y el Float-Zahl en PB lo extrahieren. Außerdem puede ser en esta Weise el Rückgabewert direkt en el XProfan-Variable zurückschreiben, indem uno deren Adresse benutzt.
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
11.05.2023  
 




funkheld
Gracias para deine Ayuda.
Yo hoffe el Yo ahora con 74 Jahren bald begreife.

Un Bitte Todavía.
Yo habe hier una Test con freebasic gemacht , el muy rápidamente es y me gefallen ha de el
Geschwindigkeit her.
¿Puede du Por favor, el fbProc veces umsetzen para PB así Yo veces el Geschwingkeit sehen kann de PB.

Como hier auch otra vez Variables transferencia voluntad de el fbProc .

Vielen dank para deine Mühe.
 {$FBSYNTAX on}
declarar 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 erzeugebildi(byval b As Integer, ByVal g As Integer) As Integer Export
Dim test As Integer
FOR test = 0 TO g-100000 step 3
poke integer,test+b,&h0000ff
next test
volver 0

ENDPROC

array&=CreateDIB(700,700)
groesse&=700*700*3
hoehe&=700
Ventana 20,20-750,780
Cls RGB(255,255,255)
bild&= Largo(array&,40)
erzeugebildi(bild&,groesse&)
DrawDIB(%hdc,10,10,array&)
WaitKey
FreeDIB(dib&)
End
 
11.05.2023  
 




Jens-Arne
Reumschüssel
Yo habe el Expediente "dib.dll" no, por lo tanto kann Yo el no testen. Aber Yo intenta, el fbPROCs en pbPROCs a traducir:

pbProc erzeugebild(b.i,g.i)
protected test.i
FOR test = 0 TO g-100000 step 3
pokeB(test+b,$00)
pokeB(test+b+1,$00)
pokeB(test+b+2,$ff)
next test
procedurereturn 0
ENDPROC

pbProc erzeugebildi(b.i,g.i)
protected test.i
FOR test = 0 TO g-100000 step 3
pokeI(test+b,$0000ff)
next test
procedurereturn 0
ENDPROC

Und hey, klar verstehst Usted el trotz Deines bastante una bisschen vorgerückten Alters. Andere puede con 74 sólo su träumen, se todavía con así komplizierten como abstrakten Dingen a beschäftigen.
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
11.05.2023  
 




funkheld
Gracias el klappt wunderbar.

Jetzt Yo auch el Rückgabe de los Werten verstanden.

Es más rápido como freebasic.

Könnte uno de PB de auch Windows API con Grafik realisieren welche entonces en Profano se ejecuta?

Gruss
 
12.05.2023  
 




funkheld
Pagar de una Zona en el otro Zona funktioniert no.

Was para una fehler Yo ahora Por favor, gemacht?

Gracias.
gruss
declarar zahlen#,i%
declarar zahlen1#,i1%
pbPROC multiply(*zahlen,*zahlen1)
protected i.i
for i=0 to 999
PokeL(*zahlen1+(i*4),PeekL(*zahlen+(i*4))*6)
next i

ENDPROC

cls
dim zahlen#,1000*4
dim zahlen1#,1000*4
for i%,0,999
long zahlen#,(i%*4)=rnd(10000)+1
endfor'i%
for i%,0,9'el ersten zehn Originalzahlen Mostrar
imprimir @long(zahlen#,i%*4)
endfor'i%
multiply(zahlen#,zahlen1#)
imprimir "--- con 6 multipliziert:"
for i%,0,9'el ersten zehn multiplizierten Pagar Mostrar
imprimir @long(zahlen1#,1*4)
endfor'i%
waitinput
disponer zahlen#
disponer zahlen1#
end
 
12.05.2023  
 




Jens-Arne
Reumschüssel
Usted hast en el ersten zehn multiplizierten Pagar de Versehen 1 en lugar de i% geschrieben:

imprimir @long(zahlen1#,1*4)

Lo muss heißen:

imprimir @long(zahlen1#,i%*4)

Diese Art de Fehlern saber Yo sólo a bien...
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
12.05.2023  
 




Jens-Arne
Reumschüssel
> Könnte uno de PB de auch Windows API con Grafik realisieren welche entonces en Profano se ejecuta?

Sí, uno kann todos möglichen Windows-API-Aufrufe en PB benutzen (simplemente una Unterstrich hinter el Funktionsnamen escribir, z.B. MessageBox_(...)). Wenn uno el DC vom XProfan-Ventana übergibt, puede ser auch darauf dibujar (el entsprechende XProfan-Systemvariable es standardmäßig ge-Shared y muss no extra transferencia voluntad: %HDC).

Ein Ejemplo:

pbPROC Malen()
protected s$,r.RECT ;PB sabe el API-Estructuras (en diesem Fall RECT)
s$="Dies es una Texto." ;kann (y muss) Unicode ser, porque PB automáticamente el Unicode-Variante de DrawText benutzt
r\left=10
r\top=10
r\right=210
r\bottom=30
DrawText_(%HDC,@s$,-1,@r,#DT_LEFT) ;PB sabe automáticamente el API-Konstanten (con vorangestelltem '#')
ENDPROC

cls
Malen()
waitinput
end
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
12.05.2023  
 




funkheld
Gracias para deine Ayuda.

Como sieht lo Por favor, con diesem Befehlen de PB de , natürlich sin dieses:
Open......
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow

Wenn algo neu es, frage Yo siempre viel para una durchführbares Grundgerüst.

Gracias para deine Respuesta.
CreateImage(0, 200, 200) And StartDrawing(ImageOutput(0))
Box(0, 0, 200, 200, RGB(255, 255, 255))
For Radius = 100 To 10 Step -10
Circle(100, 100, Radius, RGB(Random(255), Random(255), Random(255)))
Next
StopDrawing()
ImageGadget(0, 0, 0, 200, 200, ImageID(0))
 
12.05.2023  
 




Jens-Arne
Reumschüssel
Events voluntad en pbPROCs no trabajo, denke Yo. Es sí el interne Messagehandling de PureBasic en "richtigen" PureBasic-Programmen. Hier nutzen wir aber siempre sólo einzelne Procedures, el Messagehandling übernimmt XProfan.

Yo glaube por lo tanto no, dass Gadgets innerhalb de pbPROCs laufen voluntad. Yo sería como más bien Controls direkt encima CreateWindow o. CreateWindowEx erzeugen. Ob el angeklickt voluntad etc., puede ser entonces en el XProfan-SubclassProc abfragen. Und el kann natürlich auch en un pbPROC umgeleitet voluntad, indem uno en él el Parámetro a una solche übergibt. Es para umfangreichere SubclassProcs incluso muy a empfehlen, porque esta geschwindigkeitssensibel son. Wenn una neue Message ankommt, während el SubclassProc todavía se ejecuta, kann lo Ärger geben, porque esta entonces otra vez aufgerufen se, während ellos todavía no final es.

Nochmal anders ausgedrückt: Alles, qué con el GUI a tun ha, sería Yo en XProfan escribir. El Erstellung el Controls muss sí no superschnell ir, el bekommt Profano muy bien hin. Umfangreichere Berechnungen aller Art son aber en uno pbPROC perfekt aufgehoben. Auch el Füllen z.B. uno TreeViews oder uno GridBox kann en uno pbPROC muy rápidamente ausgeführt voluntad (allerdings no en Gadget-Características, porque lo sí no Gadget-Nummer son, pero desafortunadamente en entsprechenden, bastante komplizierten Windows-API-Características). Aber el Abfrage, si el Nutzer en irgendetwas geklickt ha, sería Yo, como dijo, en XProfan escribir.
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
12.05.2023  
 




Jens-Arne
Reumschüssel
Usted puede Usted por Drücken de '#' en JRPC3 de paso ansehen, como el Code aussieht, el para el PB-DLL producido se (si la Erzeugung erfolgreich war - y si XProfEd_JR benutzt). Como puede ser entonces bien sehen, qué de una cierta pbPROC eigentlich se y cómo el Dinge trabajo - oder eben auch no trabajo. Como erkennt una continuación z.B. muy schön, dass con Shared übergebene XProfan-Variables en PB como Pointer dargestellt voluntad. Es auch el Grund, por qué ellos z.B. no como Laufvariablen para FOR-Schleifen taugen, auch si uno dafür una Integervariable benutzt ha.
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
12.05.2023  
 




Jens-Arne
Reumschüssel
Was el Drawing-Características angeht, el Usted oben genannt hast, weiß Yo en el Moment no, si el trabajo kann oder no. Das hängt su de, qué "OutputID" en StartDrawing eigentlich es. Si el una DC es, puede ser como %HDC angeben y luego dürfte lo laufen. Si el aber una PB-interne ID es, se lo schwierig, fürchte Yo. Si usted API-Características nutzt, y el hay sí para todos möglichen Grafikausgaben, se lo aber trabajo.

Ob el aber así una großen Geschwindigkeitsvorteil ergibt, weiß Yo no bastante. XProfan benutzt para el Grafikausgabe al Ende intern en efecto el Windows-API-Características.

Man debería no versuchen, el halbe Programa en pbPROCs a verlagern. Sondern es sinnvoll, el meist muy wenigen Passagen en un Programa a identifizieren, el wirklich de una Geschwindigkeitsboost por una native Función profitieren. El lagert una continuación de, alles otro restos XProfan.
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
12.05.2023  
 




funkheld
¡Hola, danke para deine Ausführliche Info.

Gruss
 
12.05.2023  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

64.382 Views

Untitledvor 0 min.
Paul Glatz vor 4 Tagen
Jens-Arne Reumschüssel vor 28 Tagen
Manfred Barei25.09.2024
Gast.081529.08.2024
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie