SDK-Helfer/ Tools | | | | - 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 | | Ladeanzahl: | | | | Descargar | | | | 1.699 kB | | Bezeichnung: | XProfEd_JR | | Versión: | 5.2 | | Kurzbeschreibung: | Alte Versión sin AutoComplete a Sicherheit | | Hochgeladen: | 15.02.2021 | | Ladeanzahl: | | | | Descargar | | | | 3.777 kB | | Bezeichnung: | JRPC3 | | Versión: | 10.29 | | Kurzbeschreibung: | ZIP-Expediente en lugar de Installer | | Hochgeladen: | 02.04.2021 | | Ladeanzahl: | | | | 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 10 - |
| | « 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 X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 24.09.2022 ▲ |
| | |
| | funkheld | El Erweiterung con FreeBasic es algo Superleichtes , es Basic.
Dazu Lernen macht no dumm. XPSE kommt no mehr klar de XProfan3 stellte Jens-Arne fest.
Tal vez gerade el Performance wegen.
Yo glaube du hast lo ansatzweise verstanden por qué Jens-Arne el gemacht ha. Natürlich wegen dieser Performance. Er möchte el XProfanx4 no neu erfinden.
Gruss |
| | | | |
| | Jens-Arne Reumschüssel | Yo verdeutliche lo otra vez a una Ejemplo, el tal vez una bisschen el Hemmungen nimmt:
Nehmt a, Ihr wolltet una Apfelmännchen dibujar. Das Problema es, dass el Berechnung el Farbwerte el Pixel el Flaschhals en Geschwindigkeit darstellt. Das, y sólo como el fbProc sieht en me como folgt de:
fbPROC fbIteration(ByRef xr As Integer,ByRef yi As Integer) As Integer Export dim as double a,b,r,i,x,xalt,y dim as integer v,ergebnis r=_rmin!+_xr&*_ar! i=_imin!+_yi&*_ai! v=0 x=0.0 y=0.0 do xalt=x a=x*x b=y*y x=a-b+r y=2*xalt*y+i v=v+1 bucle until (((a+b)>_tiefe%) or (v=_tiefe%)) if v=_tiefe% then ergebnis=0 más ergebnis=(v mod _maxf&)+1 end if volver ergebnis ENDPROC
Hay, cómo sieht, unos pocos gepushte XProfan-Variables esta. Für esta Función muss uno eigentlich gar nichts neu aprender salvo el Art, como en FreeBasic Variables deklariert voluntad, dass en una "if" una "then" folgt y cómo una "repeat...until" aussieht (do...bucle until). Gäbe lo fbProcs no, debería uno se una DLL esta con uno bastante otro Lingua remendar. Es, glaube Yo, viel aufwändiger, como se una vez anzusehen, cómo hacerlo con el Variables macht. So puede ser el alles en un einzigen Ver código fuente escribir y muss se sonst en nichts kümmern. Yo glaube, el es wert, se así kurz auseinanderzusetzen. Aber necesario tut uno gar nichts.
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 ▲ |
| |
| | Jens-Arne Reumschüssel | Na bien, Yo ahora en fbProcs folgende Konzessionen gemacht (el erforderlichen Umsetzungen nimmt JRPC3 automáticamente antes, vorausgesetzt cada Befehl es en uno eigenen Línea):
- "then" kann en if weggelassen voluntad - lo kann "endif" en lugar de "end if" benutzt voluntad - lo kann "repeat ... until" en lugar de "do ... bucle until" benutzt voluntad - lo kann "endwhile" en lugar de "wend" benutzt voluntad - lo kann "endfor" en lugar de "next" benutzt voluntad [später hinzugefügt, siehe unten en el Foro] Mit esta einfachen Anpassungen puede ser nun - salvo el Variablendeklarationen - tatsächlich fast reinen XProfan-Code escribir, si uno fbProcs para el benutzt, wofür ellos como son: schnelle Berechnungen anzustellen.
Beste Grüße, Jens-Arne
EDIT: Yo finde lo de paso phantastisch, dass se auch +70-Jährige con esta Dingen auseinandersetzen! Mein Vater ha todavía Mainframes con Lochkarten programmiert; desafortunadamente es él antes kurzem verstorben. Como viel einfacher haben wir lo heute con XProfan y el una oder otro pequeño Helferlein dazu. Sich así a beschäftigen, hält determinado geistig fit. |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 15.01.2022 ▲ |
| |
| | p.specht
| Jetzt kann incluso Yo otra vez aufspringen:
- "then" kann en if weggelassen voluntad - lo kann "endif" en lugar de "end if" benutzt voluntad - lo kann "repeat ... until" en lugar de "do ... bucle until" benutzt voluntad - lo kann "endwhile" en lugar de "wend" benutzt voluntad Mit esta ... Anpassungen puede ser nun - salvo el Variablendeklarationen - tatsächlich fast reinen XProfan-Code escribir, ...(en)... fbProcs
Un hervorragende Solución!
P.S.: Mein Beileid, Jens-Arne! Auch mein Vater verstarb antes kurzem. |
| | | XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 15.01.2022 ▲ |
| |
| | funkheld | Gracias para deine Erweiterung. Me complace siempre encima Erneuerungen, como sieht una continuación el lo weitergeht.
Damit hast du incluso una ungläubigen Thomas geholfen el otra vez en Pferd springt.
Dann puede ser determinado bald kleine Beispiele con FreeBasic de p.specht sehen.
Lo va aufwärts con XProfanx4 y FreeBasic.
Spannend se lo todavía si con sendmessage...a XProfanx4 zurück va.
Gruss |
| | | | |
| | Jens-Arne Reumschüssel | Gracias Euch beiden! Sí, lo va hoffentlich otra vez algo aufwärts.
SendMessage debería eigentlich no nötig ser, porque el sí alles sequentiell abgearbeitet se y el DLL con el Hauptprogramm encima Variables kommunizieren kann. Aunque puede ser una fbProc natürlich como Hilo starten, qué con XProfan-Procs no va. Como se sendmessage entonces tatsächlich muy interessant, porque el XProfan-Hauptprogramm sí unabhängig de el Hilo weiterliefe. Aunque Yo me con Hilos bisher siempre furchtbar el Finger verbrannt, jedenfalls entonces, si más que un hilo laufen debería. Como gibt's ständig Se bloquea sin irgendwelche Fehlermeldungen, egal, como muy Yo einzelne Teile con Mutexes abgesichert habe. Von Optimierungen como Register-Alignment en Variables y Parametern veces bastante abgesehen. Como bräuchte Yo wohl todavía Nachhilfe...
Saludo, Jens-Arne |
| | | XProfan X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 15.01.2022 ▲ |
| |
| | Jens-Arne Reumschüssel | Hier veces una Ejemplo, como *no* funktioniert, tal vez kann me sí alguien sagen, Yo como falso mache (el Warnungen vom FreeBasic-Compiler puede ser ignorieren, el Programa se ejecuta):
{$FBSYNTAX on}
declarar _hE1%,_hE2%,_Mutex% SharedInFbProcs declarar _hE3%,_Ende%,_Zaehler%,_hDLL%
fbPROC fbThreadProc(ByVal p As Integer) As Integer Export dim as integer zaehler,i,t,ende dim as zstring pointer s ende=0 zaehler=0 t=timer s=HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,1000) mientras que ende=0 zaehler=zaehler+1 if p=1 poke zstring,s,"Hilo "+str(p)+" se ejecuta... "+str(zaehler) WaitForSingleObject(_Mutex%,0) sendmessage(_hE1%,WM_SETTEXT,0,s) ReleaseMutex(_Mutex%) más poke zstring,s,"Hilo "+str(p)+" se ejecuta... "+str(zaehler) WaitForSingleObject(_Mutex%,0) sendmessage(_hE2%,WM_SETTEXT,0,s) ReleaseMutex(_Mutex%) endif sleep 1000-(timer-t) t=timer endwhile HeapFree(GetProcessHeap(),0,s) volver 0 ENDPROC
cls _hE1%:=@create("EDIT",%HWnd,"",10,10,@width(%HWnd)-20,20) _hE2%:=@create("EDIT",%HWnd,"",10,40,@width(%HWnd)-20,20) _hE3%:=@create("EDIT",%HWnd,"",10,70,@width(%HWnd)-20,20) _Mutex%=~CreateMutex(0,0,0) _hDLL%=@usedll("test_fbprocs.dll") ~CreateThread(0,0,~getprocaddress(_hDLL%,"FBTHREADPROC@4"),1,0,0) ~CreateThread(0,0,~getprocaddress(_hDLL%,"FBTHREADPROC@4"),2,0,0) _Zaehler%:=0 _Ende%:=0 whilenot _Ende% inc _Zaehler% settext _hE3%,"Das Hauptprogramm se ejecuta... "+@str$(_Zaehler%) waitinput 1 if %scankey=27 _Ende%:=1 endif endwhile freedll _hDLL% end
EDIT: Das scheint algo así a tun a haben, dass dieselbe fbProc 2x como Thread started se. Wenn uno zwei getrennte (inhaltlich gleiche) Procs benutzt, funktioniert lo. Das heißt also wohl, dass dieselben Variablenadressen de beiden Hilos benutzt voluntad, qué no gutgehen kann. Aber por qué es entonces p una vez "1" y una vez "2", jedenfalls a Anfang? Sehr merkwürdig. |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 15.01.2022 ▲ |
| |
| | funkheld |
En me se ejecuta no como se. Lo se sauber con deiner neuesten Versión compiliert.
Wenn Yo starte kommt el Fehlermeldung (Bild)
Wenn I Ok drücke kommt unten el Meldung y el Programa steigt entonces de. "Das Hauptprogramm se ejecuta..."
Yo habe el XProfanx4 con PatchXProfanX4a
Mit Hilo es una gefährliche Sache. Manchmal reagieren incluso verschiedene PC en él zb como en me : va oder va no En Hilo kann Yo auch el Fehler no encontrar.
En Purebasic spiele Me gusta con Filemap. Sender y Empfänger. Sombrero el qué con Hilo a tun? Zwei Programas laufen y puede se gegenseitig Daten zuschieben y gegenseitig steuern.
Gruss |
| | | | |
| | funkheld | Como puede Por favor, Cuerdas transferencia voluntad? Dieses no es anerkannt :
declarar texti$ SharedInFbProcs
Gracias. |
| | | | |
| | Jens-Arne Reumschüssel | Das Testprogramm se ejecuta no, porque Usted no "test.prf" genannt hast. Aus el Dateinamen se De hecho, el Name el DLL generiert, el Yo para el Hilos con @usedll() con un Handle versehen muss. Und como Yo "test_fbprocs.dll" en diesem Ejemplo hardgecodet. Alternativ muss Usted "test_fbprocs.dll" en usedll en el Namen ändern, el se de el Namen ableitet, el Usted el Testprogramm gegeben hast.
Cuerdas a el DLL a transferencia es heikel. Das Yo deshalb no simplemente con "SharedInFbProcs" zugelassen, porque una Stringvariable, sagen wir "s$", en cada neuen Zuweisung de Texto una bastante neuen Speicherplatz bekommt:
s$="Text 1" 's$ es irgendwo en el Speicher s$="Text 2" 's$ es ahora irgendwo bastante anders en el Speicher
Das bedeutet, uno kann no simplemente el Pointer transferencia, el s$ en Initialisierung el DLL ha, como se el Inhalt de @addr(s$) en cualquier momento ändern kann, je después de, qué el Benutzer así tut.
Cuerdas musst Usted por lo tanto möglichst como Bereichsvariablen transferencia, el behalten ihren Speicherplatz. Man muss entonces aber natürlich auch dafür sorgen, dass el Zona groß genug para alles es, lo que el DLL en el String reinschreiben podría.
Ejemplo:
{$FBSYNTAX on}
declarar Zona#
fbPROC fbStringTest(ByVal pString As ZString Pointer) As Integer Export MessageBox(0,*pString,"Testausgabe String",0) 'el Stern antes Pointer-Variables besagt, dass el Inhalt genommen voluntad se, no Valor des Pointers (lo ginge aber en diesem Fall auch sin Stern, el API-Función MessageBox nimmt auch el Pointer en el String) *pString="Dies es una neuer Teststring." volver 0 ENDPROC
cls dim Zona#,10000 '10000 es en cada Fall groß genug cadena Zona#,0="Dies es una Teststring." fbStringTest(Zona#) imprimir @cadena$(Zona#,0) waitinput end
Man podría Zona# auch con SharedInFbProcs pushen, aber el wäre entonces una "Any Pointer", kein "ZString Pointer", y el führt en Cuerdas a Problemen, porque FreeBasic ya wissen muss, dass es una nullterminierten String handeln se, así alles nahtlos zusammenspielt.
Mit FileMaps arbeite Yo auch manchmal. Dann puede ser immerhin una zweiten Prozess laufen dejar y hay Daten verarbeiten, qué wesentlich sicherer es, como un hilo a starten. Aber manchmal es un hilo doch interessanter. Aber eben auch brandgefährlich, irgendwelche Implikationen scheine Yo como todavía no a durchblicken, el Variablenwerte durcheinanderwirbeln y a Zugriffsverletzungen führen puede.
Saludo, Jens-Arne |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 17.01.2022 ▲ |
| |
| | funkheld |
Gracias Jens-Arne hast du Super erklärt. Jetzt funktioniert lo. Yo quería lo auch en el FB-Screen haben,
Hilo va ahora.
Gruss
|
| | | | |
| | funkheld |
Man podría Zona# auch con SharedInFbProcs pushen, aber el wäre entonces una "Any Pointer", kein "ZString Pointer", y el führt en Cuerdas a Problemen, porque FreeBasic ya wissen muss, dass es una nullterminierten String handeln se, así alles nahtlos zusammenspielt.
Como se una String en# nullterminiert para Pushen con SharedlnFbProcs?
Gracias. |
| | | | |
|
RespuestaTema opciones | 63.607 Views |
ThemeninformationenDieses Thema ha 8 subscriber: |