English
SDK-aide/ Tools

JRPC new Precompiler for XProfan X4 - JRPC3

 
- Page 1 -



Jens-Arne
Reumschüssel
good evening together,

i'm recent over the trouble stumbled, that XPSE a quite large Quelldatei of I do not More process could. variables get suddenly as not definiert gemeldet and others "erratische" Problems More. I could me present, that this on it lying, that XPSE Keywords in windows-Atoms manages. there's sometime Schluss (with something between 60.000 and 70.000 Piece, where one deliberating must, that XPSE The windows-API with vorhält). Perhaps is But something integrally other, I can Yes not whom "Maschinenraum" of XPSE look.

anyway stayed me, there XPSE not any more taken care of becomes, nothing other spare, as the nachzubauen. the Result is JRPC3.

----- Features:

*reasonable Message of Fehlern
*direct display the Programmablaufes in XProfEd (sofern the under erhältliche aufgebohrte XProfEd is used)
*Umsetzung the middle-aged Profan-Syntax for Operators and old Containerfunktionen
*extreme speedy native fbPROCs, sofern one FreeBasic installs has (free, see Help)
*with fbPROCs can additionally Inline-Assembler too to XProfan X4 realized go
*extreme speedy native pbPROCs, sofern one PureBasic installs has
*Echtzeitverfolgung of Variableninhalten
*simple Zeitmessungen in the Programmablauf
*Profan-Kompilerdirektiven functions finally sensible (z.B. Verschachtelung)
*eingebettete variables functions too with Arrays
*most WIN32-API-functions are already vordefiniert included
*API-Aufrufe over @external(...) go automatically in @call(...)-Aufrufe umgesetzt
*Einrückungsanalyse to that find of vertrackten Verschachtelungsfehlern
*Klammeranalyse to that find of vertrackten Klammerfehlern
*ENUMERATE-Funktionalität
*Assert to Fehlerkontrolle
*it can arbitrary DLLs into XProfan-EXE integrate go, so tappt im dunkeln not delivered go must (see {$WrapDll})
*simple Killen Pixel JRPC3 launched Programs (interprets, .prc launched, .exe launched)
*extreme quick (and therefore naturally not XProfan written, there a interpretierte Language this natural plenty too slow is)
*at Start of JRPC3 already available .prc-Files can to that started and left used go (it'll one Info displayed, that it itself for a altes Compilations deals)
*the Profan-Compiler can to Beschleunigung with high Prozessorpriorität called go
*eingebauter Update-Checker with Download, if it one Update gives (Help --> online to Updates search)
*64- or 32-bit-Version available (simply JRPC3_64.exe or JRPC_32.exe as Interpreter in XProfEd deposit [Options --> general Settings] and JRPC3 with F7 started) - deference, The 64-bit-Version created naturally no 64-bit-XProfan-programs, there XProfan the not can, separate JRPC3 self becomes as 64-bit-Program carryed out
*XProfan X4-Syntax available (möglicherweise not yet everything, I presumably not everything of it use, but I have me circa Vollständigkeit ready - anyway are z.B. HASH-Arrays and QUADINTs thereby)
*Interpreter, PRCs and EXEs can with Kommandozeilenparametern carryed out go
*Interpreter, PRCs, EXEs and XPSE can with Administratorrechten carryed out go
*Procedures, The in the actually Program of course include are, but not uses go, go from the umgesetzten File removes, around the Filesize the Kompilats possible small To hold
*variables, The in the actually Program of course include are, but not uses go, go from the umgesetzten File removes, around the Filesize the Kompilats possible small To hold and the Speicherverbrauch To optimize
*nPROCs from XPSE go automatically with XPE to a DLL umgesetzt and the Aufrufe the nPROCs in the program properly adjusted, sofern XPSE present is
*almost everything from XPSE functions too in JRPC3 ({$NOERR}, {$(PRE)BATCH}, {$PUSHKEYWORD}, Interpreter, Runtime and compiler determine, Shorties, ...)
*XProfEd_JR with View source-AutoComplete
*XProfEd_JR with View source-Memory-function (Markierungen, To them zurückgesprungen go can)

Einschränkungen:
-no XPSE-Inline-Assembler, well but XProfan-Inline-Assembler (therein though no tests on Korrektheit the Codes)
-ABER: one can XPSE from JRPC3 out Call, so these Funktionalität furthermore available is, sofern one XPSE own (new Shorty: {$x})
-variables, The in a procedure not declared are, separate "aus the aufrufenden procedure übernommen werden", are standardmäßig not registered (XProfan allows the, but such a thing is just as mortal How GOTO-instructions). Please any To nutzenden Inputs as Parameter transfer, and if something from the aufrufenden Programmteil changed go must, when calling as Parameter z.B. @addr(x&) use and the procedure parameters x# and LONG x#,0=y& benefit.
If one but absolutely "vererbte" variables benefit would like, can this with the Kompilerdirektive {$Declare...} do.

*as Hommage on XPSE sounds The Endung the Ausgabedatei ".enh3"

an genauere explanation the individual Features is the chm-Helpfile To entnehmen, The in the program under Help --> Helpfile Show or with F1 available is.

----- /Features

Download and install:
JRPC3 can under Downloaded go (setup_jrpc3.exe or as ZIP-File).
as Installationsverzeichnis Please the XProfan-Stammverzeichnis indicate, means the one, in the The Files PROFAN.EXE, PROFCOMP.EXE, PRFRUN32.EXE etc. lying. alternatively can The ZIP-File Downloaded and its Content manually in that XProfan-Stammverzeichnis copies go.

facility:
JRPC3_64.exe or JRPC_32.exe as Interpreter in XProfEd deposit [Options --> general Settings] and JRPC3 with F7 started.

any command are with the commands "h" How "Hilfe" abrufbar and should selbsterklärend his.

for many erweitere Features, The XProfEd concern, How z.B. jenes, The row, in the one Error auftrat, directly in XProfEd Show to, is the mitinstallierte XProfEd_JR necessary. For this must one means XProfEd_JR.exe instead of XProfEd.exe as editor using. as "goody" there moreover, that at On- and Zufalten of Programs one Fortschrittsanzeiger integrate is (the can with large Programs Yes known a little bit last).

it likes his, that not yet everything perfect functions. I Please this circa clemency. my  programs can umsetzen, but the must yet long not hot, that this with Programs another Authors, The eachone so your Eigenheiten having, too functions.

Fehlermeldungen and Verbesserungsvorschläge gladly on jreumsc@web.de or here in the Forum.

best Regards, Jens-Arne

2.584 kB
Bezeichnung:JRPC3
Version:10.29
Kurzbeschreibung: JRPC3-Installer
Hochgeladen:02/15/21
Downloadcounter363
Download
1.699 kB
Bezeichnung:XProfEd_JR
Version:5.2
Kurzbeschreibung: old Version without AutoComplete to safety
Hochgeladen:02/15/21
Downloadcounter224
Download
3.777 kB
Bezeichnung:JRPC3
Version:10.29
Kurzbeschreibung: ZIP-File instead of Installer
Hochgeladen:04/02/21
Downloadcounter291
Download
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
02/16/21  
 



 
- Page 19 -


« this Posting watts as Solution marked. »

- Page 15 -



Jens-Arne
Reumschüssel
there's a new Version, The differently with the internen Messagehandling bypassing. Please probier The time from. Perhaps is the trouble so fixed.
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
09/24/22  
 




Jens-Arne
Reumschüssel
Ah, thanks, I had to "VarFinder" sought, not to "Var-Finder".
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
10/25/22  
 




RudiB.
Hello Jens-Arne,

i'm again one merkwürdiger Error in JRPC3 noticed...



...the ought to really no Error Message cause...
The View source is the XProfed.prf of Roland...

Greeting Rudi

32 kB
Hochgeladen:10/30/22
Downloadcounter32
Download
 
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
10/30/22  
 




Jens-Arne
Reumschüssel
Well, the Fehlertext is still selbsterklärend. in the Using XProfan standing, that "date$" in future not any more supported becomes. means ought to to the neither More use. with {$UseOldProf} can the but nevertheless do, if one because absolutely would like. its of course meanwhile hochbedauerlicherweise unwahrscheinlich become, that it künftig once more a Version of XProfan give becomes, in the The Support for old functions objectively rausfliegt, but we should The Codes nevertheless for arrange, if still one wonder happens.

best Regards, Jens-Arne
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
10/30/22  
 




funkheld
have now your latest Version runtergeladen Jens-Arne.
its cool How You it moreover verbesserst the JRPC3.

i am pleased the now even in munich this Freebasic with installed becomes.

thanks and greeting
 
11/13/22  
 




Jens-Arne
Reumschüssel
Version 8.25:

next to ungezählten Bugfixes into vorangegangenen versions have I in last Time intensiver so engage, How one Sound- and Grafikdateien hardcoden and from memory Play/Show can.

For this, there were bislang already The DATA-functions of JRPC3. though becomes The Datenübergabe with long-Lines very intense, if one more Files hardcoden would like. then launch the XProfan-Program already very slow, because it u.u. zehntausende Lines reading must, and the Datenübergabe to Laufzeit is ditto extreme slow. One solches Program To kompilieren, lasts ditto plenty too long.

therefore there now The DATA-functions (BEGINDATA and DATAFILE) too as FreeBasic-versions. fbBEGINDATA and fbDATAFILE produce fbProcs, The The Datenübergabe so quick make, that one tappt im dunkeln not any more notice, and the Program Start becomes therefore naturally neither More charged, because the data Yes in a external DLL lying. Einmalig lasts The Compilation still long, but thereafter can with {$DontCompileFbProcs} The renewed Compilation prevent and the once begot DLL weiterverwenden.

If your interest on XProfan-functions have, The from it benefit wander, namely Grafikdateien (BMP, PNG, JPG, TIF, ...) directly from memory To loading and Sounds directly au the memory abzuspielen, can I here moreover yet something post. These Files You can then with the supra beschriebenen functions seinem Program hardgecoded add, without Extra-Files on with add To must.

best Regards, Jens-Arne
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
11/28/22  
 




funkheld
Hello Jens-Arne.
thanks for your tender.

i'm very interested on your Datenangebot what You supra made have.

but You need it now not extra for me make.
i wish the it More Interessenten gives The your new direction with Profran too with make.

Thank you.
 
11/29/22  
 




Jens-Arne
Reumschüssel
no trouble, go geht's:

relatively simple PROC, The only BMPs from Rohdaten in memory produce can:
declare _hLogo%

PROC Init

    declare b#
    '{ 'Image-Handles from hardgecodeten Rohdaten Generate
    DataFile b#,"Test.bmp"'must naturally existieren
    _hLogo%=CatchBmp(b#)
    dispose b#
    '}

ENDPROC'Init

PROC CatchBmp'power a raw eingelesenen BMP-area one anzeigbares Bitmap with a lever

    Parameters MemPointer&'a Memory-Variable, into the BMP binary read watts
    Declare hDC&,BITMAPFILEHEADER#,BMPInfo&,init&,hImage&
    hDC&=@External("user32.dll","GetDC",@External("user32.dll","GetDesktopWindow"))
    'Dim BITMAPFILEHEADER#,14 'I faith, this is superfluously (see under with Dispose BITMAPFILEHEADER#)
    BITMAPFILEHEADER#=MemPointer&
    BMPInfo&=MemPointer&+14
    init&=MemPointer&+Long(BITMAPFILEHEADER#,10)
    hImage&=External("gdi32.dll","CreateDIBitmap",hDC&,BMPInfo&,4,init&,BMPInfo&,0)
    @External("user32.dll","ReleaseDC",@External("user32.dll","GetDesktopWindow"),hDC&)
    'Dispose BITMAPFILEHEADER# 'I faith, this is superfluously and even harmful (it would MemPointer& released and not The original allokierten 14 Bytes)
    Return hImage&

ENDPROC'CatchBmp

cls
init
DrawPic _hLogo%,10,10;0
waitinput
deleteobject _hLogo%
end

this is original of Sebastian king/Ts-Soft/Frank Abbing. I have the offensichtliche Speicherleck in CatchBmp through Comment fixed.
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
11/29/22  
 




Jens-Arne
Reumschüssel
well then for all possible Grafikformate (BMP, ICO, GIF, JPG, EXIF, PNG, TIF, WMF, EMF). This is by me.
STRUCT S_GDIPlusStartupInput=GdiplusVersion&,DebugEventCallback&,SuppressBackgroundThread&,SuppressExternalCodecs&
declare _hPic%,_b#,_b2#,_GDIPlusToken&,_hGDIPlusDll&,_hIcon%,_hShlwapiDll&,_iStream&

PROC InitGDIPlus

    declare gdpsi#,GDIPlusToken&
    _hShlwapiDll&=@usedll("Shlwapi.dll")
    _iStream&=0
    _hGDIPlusDll&=@usedll("GDIPLUS.DLL")
    dim gdpsi#,S_GDIPlusStartupInput
    gdpsi#.GdiplusVersion&=1
    gdpsi#.DebugEventCallback&=0
    gdpsi#.SuppressBackgroundThread&=0
    gdpsi#.SuppressExternalCodecs&=0
    ~GdiplusStartup(@addr(GDIPlusToken&),gdpsi#,0)
    dispose gdpsi#
    return GDIPlusToken&

ENDPROC'InitGDIPlus

PROC DeInitGDIPlus

    parameters GDIPlusToken&
    ~GdiplusShutdown(GDIPlusToken&)
    freedll _hGDIPlusDll&

    if _iStream&

        @external("Shlwapi.dll","IStream_Reset",_iStream&)

    endif

    freedll _hShlwapiDll&

ENDPROC'DeInitGDIPlus

PROC GDIPLoadImageFromFile'is the Vollständigkeit halber dabei; we want Yes but from memory reading

    Parameters Image$
    Declare result&,FileW#,Bitmap&
    result&=0
    dim FileW#,@len(Image$)+2
    widestring FileW#,0=Image$
    ~GdipCreateBitmapFromFile(FileW#,ADDR(Bitmap&))
    dispose FileW#

    if Bitmap&

        result&=Bitmap&

    Endif

    return result&

ENDPROC'GDIPLoadImageFromFile

PROC GDIPlusLoadImageFromMemory'Icons must ditto as normal Graphics (BMP, JPG etc.) transfer go, not as ICO-Files!

    Parameters Image#,ReturnAsAicon%'ReturnAsAicon% can also omitted, then becomes one normales Grafikhandle zurückgegeben
    Declare result&,Bitmap&,hBitmap&,pc%,err%
    pc%=%pcount

    if pc%=1

        ReturnAsAicon%=0

    endif

    result&=0

    if _iStream&=0

        _iStream&=@external("Shlwapi.dll","SHCreateMemStream",Image#,@sizeof(Image#))

    else

        @external("Shlwapi.dll","IStream_Reset",_iStream&)
        @external("Shlwapi.dll","IStream_Write",_iStream&,Image#,@sizeof(Image#))

    endif

    err%=~GdipCreateBitmapFromStream(_iStream&,@addr(Bitmap&))

    if err%<>0

        @messagebox("GdipCreateBitmapFromStream-Error: "+@st$(err%),"",0)

    endif

    if ReturnAsAicon%=0

        err%=~GdipCreateHBITMAPFromBitmap(Bitmap&,@addr(hBitMap&),0)

        if err%<>0

            @messagebox("GdipCreateHBITMAPFromBitmap-Error: "+@st$(err%),"",0)

        endif

    else

        err%=~GdipCreateHICONFromBitmap(Bitmap&,@addr(hBitMap&))

        if err%<>0

            @messagebox("GdipCreateHBITMAPFromBitmap-Error: "+@st$(err%),"",0)

        endif

    endif

    @external("GDIPLUS.DLL","GdipDisposeImage",Bitmap&)

    if hBitmap&

        result&=hBitmap&

    Endif

    return result&

ENDPROC

cls
'~CoInitialize(0) 'evident not necessary
_GDIPlusToken&=@InitGDIPlus()
datafile _b#,"test.jpg"
_hPic%=@GDIPlusLoadImageFromMemory(_b#)
drawpic _hPic%,0,0;0
~deleteobject(_hPic%)
_hIcon%=@GDIPlusLoadImageFromMemory(_b#,1)
drawicon _hIcon%,0,0
~deleteobject(_hIcon%)
dispose _b#
waitinput
DeInitGDIPlus(_GDIPlusToken&)
'~CoUninitialize() 'evident not necessary
end
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
11/29/22  
 




Jens-Arne
Reumschüssel
well then for Sounds (is of me to one paragon of Frank Abbing):
declare _memsound#

PROC PlayMemSound

    parameters memsound#,synchronous%'synchronous% can also omitted, then becomes 0 as Default taken (means asynchron abgespielt)
    declare p%
    p%:=%pcount

    if p%=1

        synchronous%:=0

    endif

    if synchronous%=0

        @external("Winmm.dll","PlaySoundA",memsound#,0,~SND_MEMORY | ~SND_ASYNC)'see https://learn.microsoft.com/en-us/previous-versions/dd743680(v=vs.85)

    else

        @external("Winmm.dll","PlaySoundA",memsound#,0,~SND_MEMORY | ~SND_SYNC)

    endif

ENDPROC'PlayMemSound

PROC StopSound

    @external("Winmm.dll","PlaySoundA",0,0,~SND_ASYNC)'stop playing

ENDPROC'StopSound

cls
datafile _memsound#,"sound.wav"'must naturally existieren
playmemsound _memsound#
print "fertig."
waitinput
dispose _memsound#
end
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
11/29/22  
 




funkheld
Hello thanks. this is super. an crazy thing.
Thank you.

now I will first so rumtüfteln and play. The code is wonderful to that learn.
 
11/30/22  
 




Jens-Arne
Reumschüssel
new version (8.33) present:
- {$Declare ...} power »geerbte« variables with JRPC3 famous, if one this dangerous »Feature« of XProfan because absolutely benefit would like
- {$Dim ...} power Structures of Memory-Variables, The as Parameter in a PROC gelangen, without there gedimt To go, with AutoComplete of XProfEd_JR famous

Please in both Make The Help JRPC3 consult.

best Regards, Jens-Arne
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
02/26/23  
 




funkheld
thanks for your new version. 8.34
 
03/11/23  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

no Systemprofil laid out. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Please register circa a Posting To verfassen.
 

Topic-Options

63.218 Views

Themeninformationen



Admins  |  AGB  |  Applications  |  Authors  |  Chat  |  Privacy Policy  |  Download  |  Entrance  |  Help  |  Merchantportal  |  Imprint  |  Mart  |  Interfaces  |  SDK  |  Services  |  Games  |  Search  |  Support

One proposition all XProfan, The there's!


My XProfan
Private Messages
Own Storage Forum
Topics-Remember-List
Own Posts
Own Topics
Clipboard
Log off
 Deutsch English Français Español Italia
Translations

Privacy Policy


we use Cookies only as Session-Cookies because of the technical necessity and with us there no Cookies of Drittanbietern.

If you here on our Website click or navigate, stimmst You ours registration of Information in our Cookies on XProfan.Net To.

further Information To our Cookies and moreover, How You The control above keep, find You in ours nachfolgenden Datenschutzerklärung.


all rightDatenschutzerklärung
i want none Cookie