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 16 - |
| | « 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 ▲ |
| | |
| | Jens-Arne Reumschüssel | Ok, super, como bin Yo gespannt. Immer, si alguien neues con größeren Programmen kommt, tauchen Problemstellungen en, el lo así para mich todavía nie gab, porque cada anders programmiert. Noch schöner wär's natürlich, si simplemente laufen sería, aber veces abwarten. Wenn uno una Programa de Anfang a con JRPC3 entwickelt, funktioniert natürlich alles, porque uno lo igual así macht, como "sein muss", así lo así se ejecuta. Aber 12.000-Zeilen-Codes, el sin geschrieben fueron... Como ya he dicho, Yo bin gespannt.
Und si yo Su Testprogramm con el XProfan-Logo sehe, podría Usted tal vez DATA y insbesondere DATAFILE interés, tal vez auch {$APPENDFILE2EXE ...} (simplemente en el Ayuda a JRPC3 nachsehen, dazu F1 en laufendem JRPC3 drücken).
Saludo, Jens-Arne |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 24.09.2022 ▲ |
| |
| | RudiB. | ¡Hola Jens-Arne,
Hier veces zwei "Fehler" el me aufgefallen son.
en uno Proc funktioniert dieses z.B no:
Hier kommt el Fehlermeldung Variable xx no deklariert ! pero sólo:
oder
como zweites voluntad, si a una Proc mehrere Parámetro transferencia voluntad, no todos Parámetro übernommen. Dies es aber sólo el Fall si en dieser Proc no todos übergebenen Variables vorkommen (z.B: porque Yo kurzfristig Zeilen auskommentiert habe) Xprofan verkraftet el y verarbeitet correcto, beim JRPC3 übernimmt él sólo el Variables como Parámetro el auch en el Proc vorkommen (qué sí eigentlich auch correcto es) Hier una Ejemplo-Code.
lo se ausgegeben 20 - 25 - 100 (XProfan) lo se ausgegeben 5 - 10 - 100 (JRPC3)
Das kann natürlich en el Programa ya a Fehlern führen... |
| | | | |
| | RudiB. | Hier todavía una komisches Comportamiento de JRPC3
Im folgenden Ejemplo se una Ventana animiert ausgblendet (en XProfan)
Ventana 100,100-400,400
cls
Def SetLayeredWindowAttributes(4) !"USER32","SetLayeredWindowAttributes"' Ventana animiert ausblenden
'-----------------------------------------------------------------------------------------------------------------------
' Ventana animiert ausblenden
'-----------------------------------------------------------------------------------------------------------------------
Proc ExitAnimated
Parámetros Int Hwnd,Int time
Var i%=100
Mientras que i%>=2
i%=i%-4
Externo("USER32","SetWindowLongA",Hwnd, -20, Externo("USER32","GetWindowLongA",Hwnd,-20) | $80000)
SetLayeredWindowAttributes(Hwnd, 0, (255 * i%) /100, $2)
Sleep (time/5)
EndWhile
showwindow(Hwnd,0)
destroywindow(Hwnd)
ENDPROC
'Hauptprogramm
waitinput
ExitAnimated(%Hwnd,100)
con JRPC3 gibts una ruckliges flackern.... |
| | | | |
| | Jens-Arne Reumschüssel | Gleich veces para letzten Problema:
Das Flackern tritt auch en XProfan en, si uno el Función, el Usted con DEF definiert hast, como external-Línea schreibt. Das muss also - de welchen gottgegebenen Gründen De todos modos - una DEF-Función ser, así lo funktioniert. Abhilfe en JRPC3 schafft por lo tanto el Compilerdirektive {$NODEF2EXTERNALCONVERSION}.
Und para zweiten:
Es gewollt, dass todos Variables, el deklariert, aber nirgends benutzt voluntad, eliminiert voluntad, en Speicherplatz a sparen y el EXE-Expediente algo kleiner a hacer. Das puede ser aber ebenfalls abschalten: {$NOVAREXCLUDE}.
Con el Variables sin Suffix en VAR sehe Yo a. |
| | | XProfan X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 25.09.2022 ▲ |
| |
| | Jens-Arne Reumschüssel | So, el problema beim Ausschluss no genutzter suffixloser VAR-Variables es nun Fijo.
Aunque Yo el con Parámetros ahora sólo correcto verstanden. Offenbar debería uno el Ausschluss en Parámetros-Zeilen deaktivieren. Yo denke como veces drüber después de. |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 25.09.2022 ▲ |
| |
| | Jens-Arne Reumschüssel | Yo habe el Entfernen no genutzter Variables de Parámetros-Zeilen ahora tatsächlich deaktiviert. Es en temporären Auskommentierungen nämlich en el Tat una Problema y darf deshalb no ser.
¿Por qué el Entfernen no genutzter Variables de paso no sólo una Spielerei es, pero Laufzeitvorteile bietet, puede ser a diesem Ejemplo sehen:
{$NOVAREXCLUDE}
declarar tc&
PROC TestProc1 declarar i1%,i2%,i3%,i4%,i5%,i6%,i7%,i8%,i9%,i10%,i11%,i12%,i13%,i14%,i15%,i16%,i17%,i18%,i19%,i20% ENDPROC
PROC TestProc2 ENDPROC
cls tc&=&gettickcount whileloop 1,10000 TestProc1 endwhile imprimir &gettickcount-tc& tc&=&gettickcount whileloop 1,10000 TestProc2 endwhile imprimir &gettickcount-tc& waitinput end
Im Interpreter es el Diferencia ya deutlich a sehen, kompiliert es él immens. Allein el Speicherbereitstellung para no genutzte Variables kostet eben Tiempo. |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 25.09.2022 ▲ |
| |
| | RudiB. | | | | | |
| | Jens-Arne Reumschüssel | El neue Versión 8.05 beinhaltet en el Wesentlichen una verbesserten XProfEd_JR, en el el Tab-Schließen-Management deutlich erweitert wurde:
- lo se beim Schließen des Programms cada Tab individuell nachgefragt, si él gespeichert voluntad se, si la Ver código fuente en él seit el Laden/letzten Guardar verändert wurde - lo se nun auch en veränderte/umbenannte/gelöschte *Quelldateien* seit el Laden/letzten Guardar getestet - Abbruch des Schließens en veränderten Quelltexten/Quelldateien posible |
| | | XProfan X4XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 26.09.2022 ▲ |
| |
| | RudiB. | ¡Hola Jens-Arne,
hier veces una weitere Fehler el en me aufgepoppt es.
Diese Función en FreeBasic es el Gegenstück a -Translate$- en XProfan. Läuft en me bajo Freebasic einwandfrei. Jedoch JRPC3 scheint Características no a kennen, oder gibts como otra vez algo (una opción) Yo gelesen oder verstanden habe.
|
| | | | |
| | Jens-Arne Reumschüssel | ¡Hola Rudi,
soweit Yo sehe, es el FreeBasic-Code no innerhalb uno fbProc. Dann denkt JRPC3, lo handele son XProfan-Code, qué él pero no es.
Das hier se korrekt verarbeitet, führt aber (hierzu sogleich) a keinem sinnvollen Programmcode:
''''' ACHTUNG sólo reines FREEBASIC fbPROC StrReplace(BYVAL StrEx AS STRING, BYVAL StrMask AS STRING, BYVAL StrRplce AS STRING) AS STRING export IF LEN(StrEx)=0 O LEN(StrMask)>LEN(StrEx) RETORNO StrEx ENDIF
DIM Buffer AS STRING=StrEx DIM MaskSearch AS UINTEGER DIM MFound AS BYTE DIM lp AS UINTEGER=1 DO MaskSearch=INSTR(lp,Buffer,StrMask) MFound=0
IF MaskSearch THEN
MFound=1:lp=MaskSearch+LEN(StrRplce) ''' Buffer=LEFT(Buffer,MaskSearch-1)+ _ StrRplce+ _ RIGHT(Buffer,LEN(Buffer)-(MaskSearch+(LEN(StrMask)-1))) '' FIN IF LOOP WHILE MFound=1 RETORNO Buffer ENDPROC
Hinweise: - Zwischen Funktionsname y Parameterklammer darf kein Leerzeichen posición. - fbPROCs voluntad como DLL para XProfan disponible gestellt; lo se kein ganzes FreeBasic-"Programm" producido. Damit podría XProfan auch gar nichts anfangen. - DLL-Características, el de außerhalb el DLL aufgerufen voluntad debería (nämlich de XProfan), puede sólo 32-Bit-Integerparameter haben, keinesfalls Cuerdas, y en el Falle de XProfan sowieso no Cuerdas, el no nullterminiert son (ZSTRING wäre el korrekte Parámetro, el nullterminiert es). Es en allen DLL así. Lo müssten por lo tanto Pointer en ZSTRINGs definiert voluntad (el entonces z.B. con @addr(s$) de XProfan transferencia voluntad). - Man podría esta Función aber (sin export) intern en el DLL uso, entonces auch con sólo STRING como Parámetro. Dann debería uno aber una weitere Función definieren, el el Kommunikation con XProfan übernimmt, con export gekennzeichnet es y sólo Pointer en ZSTRINGs verwendet (el haben 32 Bit). - Wenn lo no einzige fbPROC con export son, se el DLL no producido, porque lo entonces no Función gäbe, el de außen para XProfan erreichbar wäre. - Su Code hatte algunos Eigenarten, el no yo en el verarbeitet fueron, z.B. una IF-Línea sin FIN IF (algo como como Case en XProfan). Tal vez haben wir diferente Versionen de FreeBasic?
Saludo, Jens-Arne |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 28.09.2022 ▲ |
| |
| | Jens-Arne Reumschüssel | Das hier para Ejemplo funktioniert:
''''' ACHTUNG sólo reines FREEBASIC fbPROC StrReplace(BYREF StrEx AS ZSTRING, BYREF StrMask AS ZSTRING, BYREF StrRplce AS ZSTRING, BYVAL Ret AS ZSTRING POINTER) AS INTEGER export
IF LEN(StrEx)=0 O LEN(StrMask)>LEN(StrEx) *Ret=StrEx RETORNO 0 ENDIF
DIM Buffer AS STRING=StrEx DIM MaskSearch AS UINTEGER DIM MFound AS BYTE DIM lp AS UINTEGER=1 DO MaskSearch=INSTR(lp,Buffer,StrMask) MFound=0
IF MaskSearch THEN
MFound=1:lp=MaskSearch+LEN(StrRplce) ''' Buffer=LEFT(Buffer,MaskSearch-1)+ _ StrRplce+ _ RIGHT(Buffer,LEN(Buffer)-(MaskSearch+(LEN(StrMask)-1))) '' FIN IF LOOP WHILE MFound=1 *Ret=Buffer RETORNO 0 ENDPROC
declarar s1$,s2$,s3$,erg$
cls s1$="Teststring" s2$="e" s3$="a" erg$="12345678901234567890" 'groß genug vordefinieren StrReplace(@addr(s1$),@addr(s2$),@addr(s3$),@addr(erg$)) imprimir erg$ waitinput end
Weil el Parámetro todos ByRef-Parámetro son, voluntad el Adressen en el Cuerdas (=32-Bit-Werte) transferencia. |
| | | XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM PM: jreumsc@web.de | 29.09.2022 ▲ |
| |
| | RudiB. | Yo häng veces mi FreeBasic Expediente a y una Test con Xprofan. In el Freebasic-Expediente se una "Profan-Datei" geladen y verarbeitet y como Verarbeitete Expediente gespeichert. Pfade y Expediente-Namen Por favor, selber adaptar/ändern. Was passiert en diesem Ablauf ?? Programmzeilen con Backslash al Ende z.B:
voluntad a uno Programmzeile - Struct Test= Hung&,Katze&,Maus&,Wal& zusammengefasst. Ganzzeilige Kommentare y Blockkommentare voluntad en Leerzeilen umgewandelt. Befehlszeilen el con un Doppelpunkt en uno Línea getrennt son voluntad en einzelne Zeilen aufgesplittet. z.B: If Test=0:Test=5:Endif If Test=0 Test=5 Endif ...na sí y el Profano-TestDatei öffnet o. se el Expediente-Diálogo aufrufen lo se una Expediente ausgewählt. Dieser Dateiname se a el fbProc transferencia hay verändert y zurückgegeben.
Mi FreeBasic-Vers.: FreeBASIC-1.09.0-winlibs-gcc-9.3.0 |
| | | | |
|
RespuestaTema opciones | 63.261 Views |
ThemeninformationenDieses Thema ha 8 subscriber: |