SDK-Helfer/ Tools | | | | - page 1 - |
|  Jens-Arne Reumschüssel | Guten soir zusammen,
je suis kürzlich sur cela Problem gestolpert, dass XPSE une assez grand Quelldatei de Je ne plus verarbeiten konnte. Variablen wurden soudain comme pas défini gemeldet et autre "erratische" Probleme plus. je pourrait mir présenter, dass ca daran liegt, dass XPSE Schlüsselworte dans Windows-Atoms verwaltet. voilà irgendwann Schluss (chez irgendwas entre 60.000 et 70.000 Stück, wobei on considérer muss, dass XPSE qui Windows-API avec vorhält). Peut-être es mais aussi quelque chose entier d'autre, je peux oui pas dans den "Maschinenraum" de XPSE regarder.
Jedenfalls blieb mir, là XPSE pas plus gepflegt wird, rien d'autre übrig, comme cela nachzubauen. cela Ergebnis ist JRPC3.
----- Features:
*vernünftige annonce de Fehlern *directe Anzeige des Programmablaufes dans XProfEd (sofern qui unten erhältliche aufgebohrte XProfEd verwendet wird) *Umsetzung qui alten Profan-Syntax pour Operatoren et vieille Containerfunktionen *extrem schnelle native fbPROCs, sofern on FreeBasic installiert hat (kostenlos, siehe Aider) *avec fbPROCs peux zudem Inline-Assembler aussi avant XProfan X4 realisiert volonté *extrem schnelle native pbPROCs, sofern on PureBasic installiert hat *Echtzeitverfolgung de Variableninhalten *simple Zeitmessungen im Programmablauf *Profan-Kompilerdirektiven marcher enfin vernünftig (z.B. Verschachtelung) *eingebettete Variablen marcher aussi avec Arrays *qui meisten WIN32-API-Funktionen sommes bereits vordefiniert mitgeliefert *API-Aufrufe sur @external(...) volonté automatisch dans @call(...)-Aufrufe mise en œuvre *Einrückungsanalyse zum trouver de vertrackten Verschachtelungsfehlern *Klammeranalyse zum trouver de vertrackten Klammerfehlern *ENUMERATE-Fonctionnalité *Assert zur Fehlerkontrolle *es peut beliebige DLL dans qui XProfan-EXE integriert volonté, sodass vous pas avec ausgeliefert volonté doit (siehe {$WrapDll}) *simple Killen de avec JRPC3 gestarteten Programmen (interpretiert, .prc gestartet, .exe gestartet) *extrem vite (et daher naturellement pas dans XProfan geschrieben, là une interpretierte Discours hierfür naturgemäß viel trop lente ist) *beim Start de JRPC3 bereits vorhandene .prc-Fichiers peut zum Starten et Linken genutzt volonté (es wird un Hinweis angezeigt, dass es sich um un altes Kompilat handelt) *qui Profan-Compiler peux zur Beschleunigung avec hoher Prozessorpriorität aufgerufen volonté *eingebauter Update-Checker avec Télécharger, si es un Update gibt (Aider --> online pour Updates chercher) *64- ou bien 32-bit-Version disponible (simple JRPC3_64.exe ou bien JRPC_32.exe comme Interpreter dans XProfEd hinterlegen [Optionen --> Allgemeine Einstellungen] et JRPC3 avec F7 starten) - attention, qui 64-bit-Version erzeugt naturellement aucun 64-bit-XProfan-Programme, là XProfan cela pas peux, mais JRPC3 selbst wird comme 64-bit-Programme fonctionnement *XProfan X4-Syntax disponible (möglicherweise encore pas alles, là je probablement pas alles en benutze, mais j'ai mich um Vollständigkeit prêt - jedenfalls sommes z.B. HASH-Arrays et QUADINTs dabei) *Interpreter, PRCs et EXEs peut avec Kommandozeilenparametern fonctionnement volonté *Interpreter, PRCs, EXEs et XPSE peut avec Administratorrechten fonctionnement volonté *Prozeduren, qui dans dem aktuellen Programme zwar enthalten sommes, mais pas verwendet volonté, volonté aus qui umgesetzten Dossier entfernt, à Dateigröße des Kompilats possible petite trop tenir *Variablen, qui dans dem aktuellen Programme zwar enthalten sommes, mais pas verwendet volonté, volonté aus qui umgesetzten Dossier entfernt, à Dateigröße des Kompilats possible petite trop tenir et den Speicherverbrauch trop optimaliser *nPROCs aus XPSE volonté automatisch avec XPE trop einer DLL mise en œuvre et qui Aufrufe qui nPROCs im Programme entsprechend angepasst, sofern XPSE vorhanden ist *presque alles aus XPSE funktioniert aussi dans JRPC3 ({$NOERR}, {$(PRE)BATCH}, {$PUSHKEYWORD}, Interpreter, Runtime et Compiler festlegen, Shorties, ...) *XProfEd_JR avec Voir le texte source-AutoComplete *XProfEd_JR avec Voir le texte source-Memory-Funktion (Markierungen, trop denen zurückgesprungen volonté peux)
Einschränkungen: -ne...aucune XPSE-Inline-Assembler, wohl mais XProfan-Inline-Assembler (y allerdings aucun Prüfungen sur Korrektheit des Codes) -ABER: il peut XPSE aus JRPC3 heraus appel, sodass cet Fonctionnalité weiterhin disponible ist, sofern on XPSE besitzt (neuer Shorty: {$x}) -Variablen, qui dans einer Procédure pas deklariert sommes, mais "aus qui aufrufenden Procédure übernommen werden", sommes standardmäßig pas zugelassen (XProfan erlaubt cela, mais so quelque chose ist genauso tödlich comment GOTO-Anweisungen). s'il te plaît alle trop nutzenden Inputs comme paramètre transfert, et si quelque chose aus dem aufrufenden Programmteil modifié volonté muss, beim Aufruf comme paramètre z.B. @addr(x&) verwenden et dans qui Procédure parameters x# et LONG x#,0=y& nutzen. si on mais absolument "vererbte" Variablen nutzen voudrais, peux on ca avec qui Kompilerdirektive {$Déclarer...} 1faire.
*comme Hommage à XPSE lautet qui Endung qui Ausgabedatei ".enh3"
une genauere Erläuterung qui individuel Features ist qui chm-Hilfedatei trop entnehmen, qui im Programme sous Aider --> Hilfedatei Montrer ou bien avec F1 disponible ist.
----- /Features
Herunterladen et installer: JRPC3 peux unten heruntergeladen volonté (setup_jrpc3.exe ou bien comme ZIP-Dossier). comme Installationsverzeichnis s'il te plaît cela XProfan-Stammverzeichnis angeben, alors dasjenige, dans dem qui Fichiers PROFANE.EXE, PROFCOMP.EXE, PRFRUN32.EXE etc. liegen. Alternativ peux qui ZIP-Dossier heruntergeladen et en le contenu manuel ins XProfan-Stammverzeichnis kopiert volonté.
Einrichtung: JRPC3_64.exe ou bien JRPC_32.exe comme Interpreter dans XProfEd hinterlegen [Optionen --> Allgemeine Einstellungen] et JRPC3 avec F7 starten.
Alle Befehle sommes avec dem Befehl "h" comment "Hilfe" abrufbar et devrait selbsterklärend son.
Pour viele erweitere Features, qui XProfEd betreffen, comment z.B. jenes, qui la ligne, dans qui un faute auftrat, direct dans XProfEd Montrer trop peut, ist qui mitinstallierte XProfEd_JR erforderlich. Pour cette muss on alors XProfEd_JR.exe statt XProfEd.exe comme Editor benutzen. comme "goody" gibt es en supplément, dass beim sur- et Zufalten de Programmen un Fortschrittsanzeiger integriert ist (cela peux chez grand Programmen oui bekanntlich un bisschen dauern).
Es mag son, dass encore pas alles parfait funktioniert. je s'il te plaît hierfür um Nachsicht. mon Programme laisser sich umsetzen, mais cela muss encore longtemps pas appeler, dass ca avec Programmen anderer Auteurs, qui chacun so ses Eigenheiten avons, aussi funktioniert.
Fehlermeldungen et Verbesserungsvorschläge volontiers à jreumsc@web.de ou bien ici im Forum.
Beste Grüße, Jens-Arne |
 | 2.665 kB | | Bezeichnung: | JRPC3 | | Version: | 10.40 | | Kurzbeschreibung: | JRPC3-Installer | | Hochgeladen: | 15.02.2021 | | Downloadcounter: |  | | | Download | | | | 1.699 kB | | Bezeichnung: | XProfEd_JR | | Version: | 5.2 | | Kurzbeschreibung: | vieille Version sans AutoComplete zur Sicherheit | | Hochgeladen: | 15.02.2021 | | Downloadcounter: |  | | | Download | | | | 4.065 kB | | Bezeichnung: | JRPC3 | | Version: | 10.40 | | Kurzbeschreibung: | ZIP-Dossier 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 10 - |
|  | « cette Beitrag wurde comme Solution gekennzeichnet. » | | - page 15 - |
|  Jens-Arne Reumschüssel | il y a une neue Version, qui anders avec dem internen Messagehandling umgeht. s'il te plaît probier qui la fois aus. Peut-être cela Problem avec cela 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 | qui Erweiterung avec FreeBasic ist quelque chose Superleichtes , c'est Basic.
en supplément apprendre pouvoir pas dumm. XPSE venez pas plus bien sûr ab XProfan3 stellte Jens-Arne fest.
peut-être justement qui Performance à cause de.
je crois tu as es ansatzweise verstanden pourquoi Jens-Arne cela gemacht hat. Bien sûr à cause de cette Performance. il voudrais cela XProfanx4 pas récente erfinden.
Gruss |
| | | | |
| |  Jens-Arne Reumschüssel | je verdeutliche es nochmal à einem Beispiel, cela peut-être un bisschen qui Hemmungen nimmt:
prenez à, son wolltet un Apfelmännchen zeichnen. cela Problem ist, dass qui Berechnung qui Farbwerte qui Pixel den Flaschhals chez qui Geschwindigkeit darstellt. cela, et seulement cela comme fbProc sieht chez mir comment folgt aus:
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 loop until (((a+b)>_tiefe%) or (v=_tiefe%)) si v=_tiefe% then ergebnis=0 d'autre ergebnis=(v mod _maxf&)+1 end si return ergebnis ENDPROC
il y a, comment on voit, un paire gepushte XProfan-Variablen dabei. Pour cet Funktion muss on eigentlich gar rien récente apprendre jusqu'à sur qui Art, comment dans FreeBasic Variablen deklariert volonté, dass sur un "if" un "then" folgt et comment un "repeat...until" aussieht (do...loop until). Gäbe es fbProcs pas, devrait on sich une DLL hierfür avec einer entier anderen Discours bricoler. c'est, glaube je, viel aufwändiger, comme sich einmal anzusehen, comment on cela avec den Variablen pouvoir. So peux on cela alles dans einem einzigen Voir le texte source écrivons et muss sich sonst um rien kümmern. je crois, c'est es wert, sich avec cela kurz auseinanderzusetzen. mais doit tut on gar rien. 
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 | eh bien, j'ai maintenant chez fbProcs folgende Konzessionen gemacht (qui erforderlichen Umsetzungen nimmt JRPC3 automatisch avant, vorausgesetzt chacun Befehl steht dans einer eigenen la ligne):
- "then" peux chez si être omis - es peux "endif" statt "end if" benutzt volonté - es peux "repeat ... until" statt "do ... loop until" benutzt volonté - es peux "endwhile" statt "wend" benutzt volonté - es peux "endfor" statt "next" benutzt volonté [später hinzugefügt, siehe unten im Forum] avec cette einfachen Anpassungen peux on eh bien - jusqu'à sur qui Variablendeklarationen - réellement presque reinen XProfan-Code écrivons, si on fbProcs pour cela benutzt, wofür vous voilà: schnelle Berechnungen anzustellen.
Beste Grüße, Jens-Arne
EDIT: je trouve es incidemment formidable, dass sich aussi +70-Jährige avec cette Dingen auseinandersetzen! mon père hat encore Mainframes avec Lochkarten programmiert; malheureusement ist il avant kurzem verstorben. comment viel einfacher avons wir es aujourd'hui avec XProfan et dem une ou bien anderen kleinen Helferlein en supplément. Sich avec cela trop beschäftigen, hält bestimmt 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
 | maintenant peux sogar je wieder aufspringen:
- "then" peux chez si être omis - es peux "endif" statt "end if" benutzt volonté - es peux "repeat ... until" statt "do ... loop until" benutzt volonté - es peux "endwhile" statt "wend" benutzt volonté avec cette ... Anpassungen peux on eh bien - jusqu'à sur qui Variablendeklarationen - réellement presque reinen XProfan-Code écrivons, ...(chez)... fbProcs
une hervorragende Solution!
P.S.: mon Beileid, Jens-Arne! aussi mon père verstarb avant kurzem. |
| | | XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 15.01.2022 ▲ |
| |
| |  funkheld | merci pour deine Erweiterung. je suis mich toujours sur Erneuerungen, là sieht on ensuite cela es weitergeht.
avec cela la hâte du sogar une ungläubigen Thomas geholfen qui wieder sur Pferd springt.
ensuite peux on bestimmt bientôt kleine Beispiele avec FreeBasic de p.specht voyons.
und dir aufwärts avec XProfanx4 et FreeBasic.
Spannend wird es encore si es avec sendmessage...trop XProfanx4 zurück allez.
Gruss |
| | | | |
| |  Jens-Arne Reumschüssel | merci Euch beiden! oui, und dir hoffentlich wieder quelque chose aufwärts.
SendMessage sollte eigentlich pas nötig son, weil cela oui alles sequentiell abgearbeitet wird et qui DLL avec dem Hauptprogramm sur Variablen kommunizieren peux. Allerdings peux on une fbProc naturellement comme Fil starten, quoi avec XProfan-Procs pas allez. là wird sendmessage ensuite réellement très intéressant, weil cela XProfan-Hauptprogramm oui indépendant de dem Fil weiterliefe. Allerdings habe je mir avec Threads bisher toujours furchtbar qui Finger verbrannt, jedenfalls ensuite, si plus que un fil courir sollte. là gibt's ständig Abstürze sans irgendwelche Fehlermeldungen, égal, comment très je einzelne Teile avec Mutexes abgesichert habe. de Optimierungen comment Register-Alignment chez Variablen et Parametern la fois entier abgesehen. là bräuchte je wohl encore Nachhilfe...
Salut, 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 | ici la fois un Beispiel, comme *pas* funktioniert, peut-être peux mir oui quelqu'un dire, quoi je là faux fais (qui Warnungen vom FreeBasic-Compiler peux on ignorer, cela Programme fonctionne):
{$FBSYNTAX on}
declare _hE1%,_hE2%,_Mutex% SharedInFbProcs declare _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) tandis que ende=0 zaehler=zaehler+1 si p=1 poke zstring,s,"Fil "+str(p)+" fonctionne... "+str(zaehler) WaitForSingleObject(_Mutex%,0) sendmessage(_hE1%,WM_SETTEXT,0,s) ReleaseMutex(_Mutex%) d'autre poke zstring,s,"Fil "+str(p)+" fonctionne... "+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) return 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%,"cela Hauptprogramm fonctionne... "+@str$(_Zaehler%) waitinput 1 si %scankey=27 _Ende%:=1 endif endwhile freedll _hDLL% end
EDIT: cela scheint quelque chose avec cela trop 1faire trop avons, dass dieselbe fbProc 2x comme Fil gestartet wird. si on deux getrennte (inhaltlich gleiche) Procs benutzt, funktioniert es. cela est alors wohl, dass dieselben Variablenadressen de beiden Threads benutzt volonté, quoi pas gutgehen peux. mais pourquoi ist ensuite p einmal "1" et einmal "2", jedenfalls trop Anfang? très 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 | 
chez mir fonctionne es pas comme soll. Es wird net avec deiner neuesten Version compilé.
si je es starte venez qui Fehlermeldung (Bild)
si je sur Ok drücke venez unten qui annonce et cela Programme steigt ensuite aus. "Das Hauptprogramm fonctionne..."
j'ai cela XProfanx4 avec PatchXProfanX4a
avec Fil ist une gefährliche l'affaire. quelquefois réagir sogar verschiedene PC sur elle zb comment chez mir : allez ou bien allez pas chez Fil peux je aussi qui faute pas trouver.
chez Purebasic spiele je volontiers avec Filemap. Sender et Empfänger. Hat cela quoi avec Fil trop 1faire? deux Programme courir et peut sich mutuel données zuschieben et mutuel steuern.
Gruss |
| | | | |
| |  funkheld | comment peut s'il te plaît Cordes transfert volonté? cet wird pas anerkannt :
declare texti$ SharedInFbProcs
merci. |
| | | | |
| |  Jens-Arne Reumschüssel | cela Testprogramm fonctionne pas, weil Du es pas "test.prf" genannt la hâte. Aus dem Dateinamen wird oui qui nom qui DLL generiert, qui je pour qui Threads avec @usedll() avec einem Handle versehen muss. et là habe je "test_fbprocs.dll" dans diesem Beispiel hardgecodet. Alternativ muss Du "test_fbprocs.dll" chez usedll dans den Namen changement, qui sich aus dem Namen ableitet, den Du dem Testprogramm gegeben la hâte.
Cordes à qui DLL trop transfert ist heikel. cela habe je c'est pourquoi pas simple avec "SharedInFbProcs" zugelassen, weil une Stringvariable, dire wir "s$", chez chacun neuen Zuweisung de Text une entier neuen Speicherplatz bekommt:
s$="Text 1" 's$ steht irgendwo im grenier s$="Text 2" 's$ steht maintenant irgendwo entier anders im grenier
cela bedeutet, il peut pas simple den Pointer transfert, den s$ chez qui initialisation qui DLL hat, là sich qui le contenu de @addr(s$) jederzeit changement peux, je après que, quoi qui Benutzer so tut.
Cordes musst Du daher possible comme Bereichsvariablen transfert, qui behalten ihren Speicherplatz. on muss ensuite mais naturellement aussi pour sorgen, dass qui Bereich grand genug pour alles ist, quoi qui DLL dans den String reinschreiben pourrait.
Beispiel:
{$FBSYNTAX on}
declare Bereich#
fbPROC fbStringTest(ByVal pString As ZString Pointer) As Integer Export MessageBox(0,*pString,"Testausgabe String",0) 'qui Stern avant qui Pointer-Variablen besagt, dass qui le contenu pris volonté soll, pas qui Wert des Pointers (es ginge mais dans diesem le cas aussi sans Stern, qui API-Funktion MessageBox nimmt aussi den Pointer sur den String) *pString="ca est un neuer Teststring." return 0 ENDPROC
cls dim Bereich#,10000 '10000 ist sur jeden le cas grand genug string Bereich#,0="ca est un Teststring." fbStringTest(Bereich#) imprimer @string$(Bereich#,0) waitinput end
on pourrait Bereich# aussi avec SharedInFbProcs pushen, mais cela wäre ensuite un "Any Pointer", ne...aucune "ZString Pointer", et cela führt chez Cordes trop Problemen, weil FreeBasic déjà savons muss, dass es sich um une nullterminierten String agir soll, avec cela alles nahtlos zusammenspielt.
avec FileMaps arbeite je aussi quelquefois. ensuite peux on immerhin une zweiten Prozess courir laisser et là données verarbeiten, quoi wesentlich sicherer ist, comme une Fil trop starten. mais quelquefois est un Fil doch interessanter. mais plan aussi brandgefährlich, irgendwelche Implikationen scheine je là encore pas trop durchblicken, qui Variablenwerte durcheinanderwirbeln et trop Zugriffsverletzungen mener peut.
Salut, 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 | 
merci Jens-Arne la hâte du Super erklärt. maintenant funktioniert es. je voulais es aussi sur den FB-Screen avons,
Fil allez maintenant aussi.
Gruss
|
| | | | |
| |  funkheld |
on pourrait Bereich# aussi avec SharedInFbProcs pushen, mais cela wäre ensuite un "Any Pointer", ne...aucune "ZString Pointer", et cela führt chez Cordes trop Problemen, weil FreeBasic déjà savons muss, dass es sich um une nullterminierten String agir soll, avec cela alles nahtlos zusammenspielt.
comment wird un String im Bereich# nullterminiert zum Pushen avec SharedlnFbProcs?
merci. |
| | | | |
|
répondreOptions du sujet | 73.775 Views |
Themeninformationencet Thema hat 8 participant: |