Rapidq France forums

Forums d'aide et d'échanges autour de Rapidq

Vous n'êtes pas identifié.

#1 28-07-2010 12:13:30

Erdemal
Membre
Lieu: Gelbique
Date d'inscription: 28-03-2005
Messages: 109

Doc FBinRQ en Français

Corriger l'orthographe est une galère pour moi ! Il doit en rester quelques unes ... comme toujours smile

Je vais aussi poster sur mon site une version compilée de FBinRq.Exe contenant cette donc instead de l'engliche.

-------------------------------------------------------------------------------
========- FBinRQ AIDE MEMOIRE -======= Jacques === 28 juilet l2010 ==============
-------------------------------------------------------------------------------
- l'espace est le séparateur dans les lignes ''pre cmd   et   $IFDEF
- dans les options de ''pre cmd options, remplacez les espaces par *  ' ' > '*'
- seul le mot ''pre   est '?sensible à la casse?' les autres non
- Freebasic en ligne RQ entre : $IFDEF FBB/$ENDIF  ou  $BEGIN FREEBASIC/$END (*)
  ''pre cmd monFichierFB.fbb ou ''pre cmd (monScriptResHacker)RH
- ''pre cmd maJolieIcone.Ico     dans le répertoire de votre code RQ
- ''pre cmd  accepte les chemins d'accès si les espaces y sont remplacés par '*'
- ajouter la ligne   ''pre cmd   avant la 1 ère ligne de code RQ et après les
  lignes de commentaires en tête du fichier principal de votre code RapidQ
-------------------------------------------------------------------------------
Les options de compilation sont d'abord lues dans FBinRQ.Ini, ensuite elles sont
modifiées selon le contenu des lignes ''pre. Vous définissez vos options de
compilation habituelles dans FBinRQ.Ini et vous adaptez à chaque application
dans les lignes    ''pre cmd    de votre code    ex:
''pre cmd noconsole encrypt opt norun upx diriCon

''pre cmd      liste des options :          (lire plus bas pour plus de détails)
     Set                    Reset
"CON"="CONSOLE"       "NOCON"="NOCONSOLE"       ' ajoute la console
"ENC"="ENCRYPT"       "NOENC"="NOENCRYPT"       ' encrypte le bytecode
"OPT"="OPTIMIZE"      "NOOPT"="NOOPTIMIZE"      ' l'option -OPT de RC.EXE
"EXE"                 "NOEXE"                   ' crée un exe
"RUN"                 "NORUN"                   ' exécute l'exe crée
"FBRECOMPILE"="FBRE"  "FBNORECOMPILE"="NOFBRE"  ' Recompile le lanceur de bytecode
"DIRICON"             "NODIRICON"               ' Icone app = 1ère icone rep du code
"KILL"="KILLFILES"    "NOKILL"="NOKILLFILES"    ' efface fichiers générés par la compilation
"ADDDLL"="ADDRQ32DLL" "NOADDDLL"="NOADDRQ32DLL" ' Ajoute RapidQ32.Dll à l'Exe
"UPX"                 "NOUPX"                   ' compresse l'Exe avec UPX (inhibé par ENCRYPT)
"OUTPUT"="OUT"        "NOOUTPUT"="NOOUT"        ' Montre la sortie de RC.EXE même sans erreur
"LANGDEPRECATED"="DEPRE"  "NOLANGDEPRECATED"="NODEPRE" ' FB option de compil -lang deprecated
"LANGFBLITE"="FBLITE" "NOLANGFBLITE"="NOFBLITE" ' Fb option de compil -lang fblite
"LANGFB"="FB"         "NOLANGFB"="NOFB"         ' FB option de compile -lang fb
"LANGQB"="QB"         "NOLANGQB"="NOQB"         ' FB option de compile -lang qb
"FB016"               "NOFB016"                 ' ajoute option explicit et option byval au code FB
"GICO"="FORCEGUIICON" "NOGICO"="NOFORCEGUIICON" ' Force Default Gui Ico (pour gui avec console smile
"WARNING"="WARN"      "NOWARNING"="NOWARN"      ' Ajoute les warning de compil FB dans la sortie de FBinRQ
"VON"="VERBOSE"       "VOFF"="NOVERBOSE"        ' Option verbose de RC.EXE
"BEEP"                "NOBEEP"                  ' Sons FBinRQ on/off
"FBTIMOUT"            "NOFBTIMOUT"              ' pas implémenté ...   
"BUILDCOUNT"="COUNT"  "NOBUILDCOUNT"="NOCOUNT"  ' ''Pre Datas   mises à jour autorisée
"DEFAULTMANIFEST" = "DEFMAN"  "NODEFAULTMANIFEST" = "NODEFMAN" ' utilise le manifest inclus dans FBinRQ
"RAPIDQEX"="RQEX"     "NORAPIDQEX"="NORQEX"     ' Utilise RapidQEx.Dll de Paul si présente
"BK"                  "NOBK"                    ' n'efface pas le backup fichier bas pricipale si surécrit
"LAUNCHERBAS" = "LAUNBAS"   "NOLAUNCHERBAS" = "NOLAUNBAS" ' n'efface pas le code launcher même si kill
'
Les options "NO" sont utilisées pour resetter les valeurs settées par default dans FBinRQ.Ini
-------------------------------------------------------------------------------
Pour setter l'Icone du mainform avec RapidQ32.Dll pour Version < V109
$RESOURCE FORM_ICO AS "PathFile.Ico"
frmMyForm.IcoHandle = FORM_ICO
-------------------------------------------------------------------------------
- Inclure du code FreeBasic dans RapidQ 3 methodes : 1) $IFDEF FBB ... $ENDIF
  et/ou 2)''pre cmd monFichierCodeFB.Fbb 3) $BEGIN FREEBASIC ... $END
- Inclure une resource FreeBasic dans RapidQ 3 méthodes: 1)$IFDEF FBR ... $ENDIF
  et/ou 2)''pre cmd monFichierFBRC.RC et/ou 3)$BEGIN RC_SCRIPT ... $END (*)
- Inclure Script Resource Hacker dans RapidQ 3 méthodes :
  1) $IFDEF RHK ... $ENDIF et/ou 2) $BEGIN RH_SCRIPT ... $END et ou
  3) ''pre cmd (-add*Resource.Bmp,TBMP,NBMP,0)RH    notez '*' pour ' '
- Inclure un manifest (XP, VISTA, ...) 3 méthodes :
  1) $IFDEF Manifest ... $ENDIF  ou  2) $BEGIN Manifest ... $END
  3) ''pre cmd monFichierManifest.Manifest
- Pour utiliser les formes $BEGIN ... $END, ajouter à RapidQ.Inc
  $DEFINE $BEGIN $IFDEF
  $DEFINE $END $ENDIF                       (suggestion de JohnK)
- Les fichiers RapidQ inclus avec un chemin absolu(non relatif) seront ignorés
  lors de la recherche de codes 'non RapidQ'. Ils seront pris en compte lors
  de  compilation RapidQ avec RC.EXE évidemment.
- Ne JAMAIS definir $DEFINE FBB, FBR or RHK dans votre code JAMAIS JAMAIS smile
- dans les options des lignes ''pre cmd  remplacez " " par "*"
  ex:  "my*nice.ico" pour "my nice.ico"
  ou "(-add*Resource.Bmp,TBMP,NBMP,0)RH" ou "d:\RapidQ\Belles*Icones\Ma*Belle.Ico"
- remarque utile, comme les options de ''pre cmd sont séparées par " " et les
  options non reconnues ou mal orthographiées sont ignorées, une option déja
  installée peut être rendue inopérante en lui ajoutant un caractére :
  'console ou console' sera ignoré
- renommer un Tiny exécutable quand des fonctions externes y sont inclues
  provoque une erreur à l'exécution 'can't resolve', comme pour les Dll.
- l'ordre d'apparition des options est sans importance
-------------------- ''pre Datas Format   ma macro ----------------------------
DefStr sCompteCompilation          =       "0.000"  ''pre + 0.001 3
DefStr sHeureDerniereCompilation   =    "xx:xx:xx"  ''pre Time$
DefStr sDateDerniereCompilation    =  "xx-xx-xxxx"  ''pre Date$
DefStr PremiereCompilation         =  ""            ''pre First
DefStr sTimer                      =  "1234567890"  ''pre timer
Couper et coller une, des ou aucune de ces lignes dans votre code après
les lignes ''pre cmd et avant ''pre end . Le nom des variables peut changer.
-------------------------------------------------------------------------------
' ===================================================================
' FBinRQ EXAMPLE    CUT & PASTE FROM            April 2009    Jacques
' -------------------------------------------------------------------
''pre cmd noopt noenc DirIcon Kill 'upx 'adddll 'nofbre OUT 'nocount
DefStr sBuildCount    =       "0.000"  ''pre + 0.001 3
DefStr sCompileTime   =    "xxxxxxxx"  ''pre time$
DefStr sCompileDate   =  "xxxxxxxxxx"  ''pre date$
DefStr FirstCompiled  =  ""            ''pre first
DefStr sTimer         =  "xxxxxxxxxx"  ''pre timer
''pre end
'
Declare function AddInt1 Lib "MyRq.Exe" Alias "AddInt1@8" (operand1 as Long, operand2 as Long) as Long
Print Chr$(10);Chr$(10);Chr$(10);"FB AddInt1 (7 + 8) = ";AddInt1 (7, 8)
ShowMessage ("FINISHED")
'
$IFDEF FBB      ' FB code
Declare Function AddInt1 Lib "" Alias "AddInt1" (ByVal i1 As Long, ByVal i2 As Long) As Long
'
Function AddInt1 (i1 As Long, i2 As Long) As Long Export
    Function = i1 + i2
End Function
$ENDIF          ' End FB code
' ==================================================================
' FB Resource in FB code           // to add comments in fb resources
$IFDEF FBR
#define FBRCDATA 6868                   //RCDATA not defined in FB
BAS_CODE FBRCDATA "GetResource.Bas"     // NAME TYPE "FileName"
$ENDIF
' ==================================================================
' ADD A FREEBASIC RESOURCE ICON
$IFDEF FBR
    #define MSGBOXICON 1300
    MSGBOXICON ICON "Compass.Ico" //same for all known resource type
$ENDIF
' ==================================================================
FB version compatibility issues? Try this:
''pre cmd langdeprecated fb016   allow FB>=017 to compile FB < 017 code
' ==================================================================
''pre cmd NewNameForEmbedded.Dll  change the name of the embedded .dll
''pre cmd YourFreeBasicCodeFile.Fbb   include a freebasic code file
''pre cmd YourFreeBasicResourceRCFile.RC
''pre cmd (-cmdresourcehackerscript*RH_word1,RH_Word2, ....)RH
Icon example ''pre cmd (-addoverwrite*compass.ico,ICONGROUP,1300,0)RH
' ==================================================================
' --- END OF QUICK DOC ---
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
==================- FBinRQ LONGUE DOCUMENTATION BARBANTE -=====================
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------

D'abord un remerciement a Paul Luudgate qui me suggera que les fonctions
du lanceur de bytecode sont juste des fonctions externes et peuvent être
déclarées comme des APIs, 'lib' est dans ce cas le nom de l'executable. Ceci
rendit obsolète les lignes ''RQEXPORT que nécessitait RQPC, ceci permit
aussi de créer des fonctions FreeBasic comportant autant d'arguments que
nécessaire (toujours quatre avec RQPC). Cette méthode est aussi beaucoup
plus commune que ''RQEXPORT ... qui avait aussi ses avantages.

---

Le précompilateur scanne les codes RapidQ très rapidement car il ne
s'intéresse qu'aux lignes commençant par $ et au 50 premières lignes
de code si elles contiennent un ''pre. Si ''pre end est rencontré le
scannage des 50 premières lignes de code RQ à la recherche de lignes
contenant ''pre est interrompu, ajouter ''pre end à la suite vos lignes
de ''pre cmd permet de racourcir le temps de compilation de quelques
centièmes de seconde smile.
Les lignes contenant ''pre et les lignes de commentaires ne sont pas
comptées parmi ces 50 lignes

---

Lire les documentations de RQPC vous aideront et vous donneront de
plus amples informations concernant les bytecodes. L'essentiel du code
de FBinRQ provient de RQPC. 99% de FBinRQ est compatible avec RQPC.

------------------------------------------------
Fichiers nécessaires au fonctionnement de FBinRQ
------------------------------------------------

Plus de détails sur ces fichiers dans la doc installation

FBinRQ nécessite une version de FreeBasic installée. Testé avec
FB016, 017A, 020B.

Dans le répertoire de FBinRQ.Exe doit se trouver le fichier FBinRQ.Ini
dont vous devez corriger manuellement, avec un éditeur, les chemin d'accès
à FB et à RQ afin qu'ils correspondent à vos installations FB et RQ.

Une version de UPX.Exe et de ResHacker.Exe doit être disponible dans le
même répertoire que FBinRQ.Exe. Les autres fichiers de UPX et Resource
Hacker ne sont pas nécessaires

Dans le répertoire de FBinRQ doit aussi se trouver une version de
RapidQ32.Dll renommée RQ32.Dll (V109 conseillée : Icon App = Icon MainForm)

Une version de RapidQ32.Dll doit être accessible pour vos applications
L'idéal est de la placer sous c:\Windows mais il est aussi possible de
tout compiler avec l'option AddDll qui ajoute RQ32.Dll à vos applications
et 'recrache' RapidQ32.Dll avant d'executer votre application
(= le bytecode).

---

----------------------------------------------------
FBinRQ Accepte du Code FreeBasic dans le Code RapidQ
----------------------------------------------------

Le code FreeBasic inclus dans un code RapidQ doit être inséré entre
les lignes

$IFDEF FBB
    votre code FreeBasic ici
$ENDIF

ou, si vous définissez quelque part (dans RapidQ.Inc par exemple)

$IFNDEF $BEGIN
    $DEFINE $BEGIN $IFDEF
$ENDIF
'
$IFNDEF $END
    $DEFINE $END $ENDIF
$ENDIF

alors ce qui suit fonctionne aussi. Une suggestion de JohnK

$BEGIN FREEBASIC
    Votre code FreeBasic ici
$END

Comme FBB n'est pas defini - $Define -, le compilateur RapidQ ignore,
passe les lignes comprises entre $IFDEF FBB et $ENDIF

Le code FreeBasic peut-être inclus dans tous les fichiers RapidQ
de votre projet pour autant que ce fichier soit inclus relativement
au répertoire principal du projet.

Avec FBinRQ, le code suivant compile et s'execute sans erreur

' --- Debut Code RapidQ ----  FR: AddInt = Ajoute deux entiers
$TYPECHECK ON
Declare function AddInt Lib "MonRq.Exe" Alias "AddInt@8" (operand1 as Long, operand2 as Long) as Long
'
Print Chr$(10);Chr$(10);Chr$(10);"FB AddInt (7 + 8) = ";AddInt (7, 8)   ' Appelle la function FB AddInt
'
$IFDEF FBB      ' Code FB
Declare Function AddInt Lib "" Alias "AddInt" (ByVal i1 As Long, ByVal i2 As Long) As Long
'
Function AddInt (i1 As Long, i2 As Long) As Long Export
    Function = i1 + i2
End Function
$ENDIF          ' Fin code FB
ShowMessage "Terminé"
' ---- Fin Code RapidQ ----

Compilé avec   chemin\FBinRQ path\VotreFichierCodeRQ.TouteExt

Il est aussi possible de rassembler toutes les fonctions FreeBasic dans
un seul fichier ne contenant que du code FreeBasic et de forcer sa
compilation par FBinRQ en ajoutant dans une ligne ''pre cmd
le nomdufichierFB.FBB  l'extension .FBB est indispensable.
''pre cmd SuperCodeFB.FBB

Tous les codes FreeBasic seront rassemblés dans un seul fichier,
les fichiers .FBB trouvés dans les lignes ''pre cmd   ensuite
les divers codes FB trouvé dans le code RapidQ

Pas de limite de syntaxe FreeBasic

FB accepte de l'assembleur AS (GCC) en ligne, par ce biais, FBinRQ aussi.

-------------------------------------------------------
FBinRQ accepte des ressources FreeBasic dans le code RQ
-------------------------------------------------------

Les scriptes de Ressources FreeBasic doivent être insérés entre
$IFDEF FBR
    vos ressources FreeBasic ici
$ENDIF

ou

$BEGIN RC_SCRIPT
    vos ressources FreeBasic ici
$END

Le code ressource FreeBasic peut-être inclus dans tous les fichiers
RapidQ de votre projet pour autant que ce fichier soit inclus
relativement au répertoire principal du projet.

Il est aussi possible de rassembler toutes les ressources FreeBasic
dans un seul fichier ne contenant que des ressources FreeBasic et
de forcer sa compilation par FBinRQ en ajoutant dans une ligne
''pre cmd   le nomdufichierRC.RC  l'extension .RC est indispensable.
''pre cmd SuperRessourcesFB.RC

Toutes les ressources FreeBasic seront rassemblées dans un seul
fichier, les fichiers .RC trouvés dans les lignes ''pre cmd   ensuite
les diverses ressources FB trouvées dans le code RapidQ

Très peu testé mais devrait fonctionner si les lignes de ressources
respectent la syntaxe FreeBasic ?

-------------------------------------------------------------
FBinRQ accepte des ressources Resource Hacker dans le code RQ
-------------------------------------------------------------

Les scripts de Ressources Resource Hacker doivent être insérés entre
$IFDEF RHK
    vos ressources Resource Hacker ici
$ENDIF

ou

$BEGIN RH_SCRIPT
    vos ressources Resource Hacker ici
$END

Le code ressource Resource Hacker peut-être inclus dans tous les
fichiers RapidQ de votre projet pour autant que ce fichier soit
inclus relativement au répertoire principal du projet.

Les lignes ''pre cmd  acceptent aussi des scripts de ressource
Resource Hacker, le format est:
''pre cmd (script*de*la*ressource*RH)RH
exemple :
''pre cmd (-addoverwrite*Umbrella.Ico,ICONGROUP,UMBRELLA,0)RH
note: les espaces doivent être remplacés par des etoiles '*'

Ici aussi, toutes les ressources RH trouvées seront regroupées
en un seul fichier, les lignes ''pre cmd  en premier, les scrpits
RH trouvés dans le code RapidQ ensuite.

Très peu testé mais devrait fonctionner si les lignes de ressource
respectent la syntaxe des ressources Resource Hacker, voir le doc
Resource Hacker ; il s'agit d'un fichier .hlp qui n'est plus reconnu
par Vista, Windows 7, ... Telechargez la solution chez Microsoft :
http://support.microsoft.com/kb/917607

Voir les exemples \Examples\HowTo\How_To_Resources_...

===================================================================

------------------
Lignes   ''pre cmd
------------------

Le séparateur dans les lignes ''pre est l'espace, un seul, plusieurs
espaces successifs peut causer une erreur.

Les lignes ''pre doivent se trouver dans les 50 premières lignes de
votre code principale RapidQ, juste après les lignes de commentaires
de préférence. Dans le compte de ces 50 lignes, les lignes de
commentaire et les lignes contenant un ''pre ne sont pas prises en
compte. Le scannage pour des lignes ''pre s'arrête si une ligne
''pre end  est rencontrée ou si un End Of File (EOF) est rencontré
(fin de fichier).

La ligne    PRECOMPILER_BEFORE_LINE=50    de FBinRQ.Ini contrôle
ce nombre de lignes scannées à la recherche de ''pre

''pre  est 'case sensitive' les autres mots clés/options ne le sont pas

La valeurs des options des lignes ''pre cmd sont définies par défaut
dans le fichier FBinRQ.Ini. Dans les distributions, elles sont définies
pour compiler TOUS les codes RapidQ existants en pseudo standalone avec
une console, de manière à ce que tous les codes RapidQ existants compilent
sans modification. Si la dll RapidQ32.Dll utilisée n'est pas patchée
avec le code en ANNEXE 1 à ce fichier, certains mots clés utilisés dans
les consoles ne fonctionneront pas : Locate, Inkey$ et quelques autres.
En gros seul print fonctionne sans le Patch.

Vous pouvez modifier la valeur par défaut des options des lignes ''pre
en éditant le fichier FBinRQ.Ini qui se trouve dans le même répertoire
que FBinRQ.Exe. Il est ainsi possible de définir vos propres options
par defaut. Voir Mon FBinRQ.ini en ANNEXE 2

A l'exception du mot clé ''pre, les autres options ne sont pas 'case
sensitive' : ''pre cmd con   ou   ''pre cmd conSole   ou  ''pre cmd noCON
ou   ''pre cmd NoCONsole  sont equivalents

L'orthographe des options n'est pas vérifiée, un mot clé non reconnu est
simplement passé - pas de message d'erreur FBinRQ passe au suivant -, pour
annuler une option il suffit donc de lui ajouter un caractère en entête ou
en queue. C'est très pratique 'noCON est ignoré, un moyen simple, rapide
et très très très utile pour annuler provisoirement une option.


Exemple:
--------
''pre cmd opt noenc DirIcon noKill 'upx 'adddll exe 'nofbre
''pre end
opt        dit à RC.EXE d'optimiser le bytecode (compilation ~2X plus lente,
           code ~2X plus court) Comme $OPTIMIZE ON
noEnc      reset le flag encrypt. Le bytecode ne sera pas encrypté
DirIcon    le premier fichier .Ico rencontré dans le répertoire du code
           RapidQ principal est utilisé comme icone pour l'application.
           Pas de limite de taille. Avec la version V109 des dll patchées
           de Snakedile, cette icone sera autamatiquement héritée par le
           Form.             
noKill     les fichiers crées (?10) lors de la compilation ne seront pas effacé
           à la fin de la compilation (Nécéssaires pour certain debuggage).
'upx       upx est commenté, il sera ignoré. Pour le revalider, il suffit
           d'enlever l'apostrophe. La valeur de l'option sera celle de
           FBinRQ.Ini (pas nésessairement noupx).
'adddll    adddll est commenté : il sera donc ignoré
exe        créera un executable
'nofbre    nofbre est commenté : sera ignoré


Pourquoi le prefixe 'no' ? Il permet de ressetter une option settée pas
default dans FBinRQ.Ini





' -------------------------------------------------------------
Les functions  "+"   "-"   "Date$"   "Time$"   "Timer"  "First"
' -------------------------------------------------------------

    ''pre +, ''pre -, ''pre date$, ''pre Times, ''pre timer,
    ''pre first

    Un exemple est très clair :-) ?

       
    Dans les 50 premières lignes de codes du fichier principal de votre
    code RapidQ, une ligne contenant

    ''pre +, ''pre -, ''pre date$, ''pre Times, ''pre timer, ''pre first

    sera modifiée selon la ''pre fonction. Exemples :

            DefStr sCompilationNumero      = "10"      ''pre + 1 0
            DefStr sDecompte               = "100000"  ''pre - 1 0
            DefStr sHeureDeCompilation     = ""        ''pre time$
            DefStr sDateDeCompilation      = ""        ''pre date$
            DefStr sPremiereCompile        = ""        ''pre first
            DefStr sRQ_Timer               = ""        ''pre timer

    Lorsqu'on utilise les fontions ''pre + et ''pre -, il faut ajouter
    le nombre de decimales affichées  exemple :
            DefStr sCompteLesCompilations = "10.000" ''pre +0.001 3
    On ajoute 0.001 à 10.000 à la compilation suivante 0.0001 à 10.001 etc
    sans  le '3' 10.690 est affichée 10.69
    Tous les noms de chaines sont aurorisés. Ces chaines peuvent être
    initialisées ici = "10.000"

    Ces fonctions peuvent incrémenter un compteur de compilations
    (build count) ''pre + 0.001 3, établir une date de denière
    compilation ''pre date$, une heure de derniere compilation
    ''pre time$, une date de premiere compilation ''pre first, un
    Timer de dernière compilation. Ces changements doivent être sauvés
    dans le fichier ou il se trouve : le fichier principal de code
    RapidQ, ce fichier sera donc surécrit et sauvé. Une version de ce
    fichier est sauvée avant que le fichier soit surécrit, par défaut
    l'option kill efface ce fichier de sauvegarde sauf si l'option
    ''pre cmd bk est donnée. Le nom du fichier sauvegardé est
    NomDeFichierBas.Bck 

'
' Un Exemples beaucoup plus simple à comprendre :
' -----------
    ''pre cmd console encrypt opt exe run
    DefStr sBuild        = "0"       ''pre + 1 0
    DefStr sSusbtract    = "100000"  ''pre - 1 0
    DefStr sCompileTime  = ""        ''pre time$
    DefStr sCompileTimer = ""        ''pre timer
    DefStr sCompileDate  = ""        ''pre date$
    DefStr sBuildCount   = "10.000"  ''pre + 0.001 3
    ''pre end
' =============================================================================





+++++++++++++
ANNEXE 1  +++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Si vous souhaitez patcher RapidQ32.Dll afin que les codes console
compilés fonctionnent sans faille, compilez et executez le code suivant
et sélectionnez la Dll à patcher. Avec ce patch, ajouter CLS en tête de vos
codes console rétablira toutes les commandes originales des consoles.

' ----- Début du code de Patch de DLL -----------------------------------------
' -----------------------------------------------------------------------------
' PATCH RAPIDQ32.DLL CLS to Call 'Init Console'        Jan 28th, 2010  Jacques
' Resout le pb RQPC/FBinRQ avec les mots console (Inkey$, Locate, ... )
' COR: mov [esp+2], eax  >>>   mov [esp], eax
' V_04: quelques différence mineures avec la versions _03 du 28 Jan 2009
' -----------------------------------------------------------------------------
'
''pre cmd tiny run enc opt exe con kill diricon
'
$ESCAPECHARS ON
$TYPECHECK ON
$INCLUDE "RAPIDQ.INC"
'
Cls
'
SetConsoleTitle "Patch Code pour RapidQ32.Dll Cls"
'
' Code Original dans RapidQ32.Dll  sera Replacé
' ----------------------------------------------
' 00486A7C  83 C4 F8                                 add esp,FFFFFFF8h
' 00486A7F  66 C7 04 24 00 00                        mov word ptr [esp],0000h
' 00486A85  66 C7 44 24 02 00 00                     mov word ptr [esp+02h],0000h
'
DefStr sOrgCode = Chr$(&H83) & Chr$(&HC4) & Chr$(&HF8) _
                & Chr$(&H66) & Chr$(&HC7) & Chr$(&H04) & Chr$(&H24) & Chr$(&H00) & Chr$(&H00) _
                & Chr$(&H66) & Chr$(&HC7) & Chr$(&H44) & Chr$(&H24) & Chr$(&H02) & Chr$(&H00) & Chr$(&H00)
                ' (length 16 bytes)
' Nouveau code pour RapidQ32.Dll
' ------------------------------
' 00486A7C     E8(1B010000)                call 0x011B    ; vers 0x00466B9C = Init console
' 00486A80     83C4F8                      add  esp, byte -8
'              31C0                        xor  eax, eax
'              890424                      mov  [esp], eax
'
DefStr sNewCode = Chr$(&HE8) & Chr$(&H1B) & Chr$(&H01) & Chr$(00) & Chr$(00) _
                & Chr$(&H83) & Chr$(&HC4) & Chr$(&HF8) _
                & Chr$(&H31) & Chr$(&HC0) _
                & Chr$(&H89) & Chr$(&H04) & Chr$(&H24) _
                & Chr$(&H90) & Chr$(&H90) & Chr$(&H90)  ' nop nop nop    (longueur 16 bytes)
'
PATCHFILE:
'
' SELECTIONNE LA DLL A PATCHER
' ----------------------------

Dim OpenDialog AS QOpenDialog
DefStr sOldDir, sFileDll
OpenDialog.Filter = "Dll files|*.Dll|All Files|*.*"
OpenDialog.FilterIndex = 1
sOldDir = CurDir$
OpenDialog.InitialDir = "d:\\"
If OpenDialog.Execute Then
    sFileDll = OpenDialog.FileName
Else
    ShowMessage ("Vous n'avez sélectionnez aucun fichier\n\n I QUIT QUIT.")
    Application.Terminate
End If
ChDir sOldDir
'
' Ouvre le fichier RapidQ32*.Dll à patcher
' ----------------------------------------
Dim fileDll As QFileStream
DefStr sDll
DefInt ptrCode
'
With fileDll
    If .Open (sFileDll, fmOpenReadWrite) <> 0 then
        If .Size < 500000 Then
            PRINT "\n\n DECOMPRESSEZ LA DLL D'ABORD \"UPX -d\" :  RIEN FAIT"
            .Close
            Goto FINISHED
        End IF
        sDll = .ReadBinStr(.Size)       
        If Instr (sDll, sNewCode) <> 0 Then   ' Jan 2010
            Print "\n\n DLL déja Patchée :  RIEN FAIT"
            Goto FINISHED
        End If

        ptrCode = Instr (sDll, sOrgCode)
        If ptrCode > 0 Then
            Print "\n\n Trouvé le code à remplacer en : &H" & Hex$(ptrCode - 1)
            If Instr (ptrCode + 15, sDll, sOrgCode) <> 0 Then
                ShowMessage ("\n\n Le code à remplacer à été trouvé deux fois ??\n\nPas de solution à ça.\n\n JE QUITTE, RIEN FAIT")
                Application.Terminate
            End If
            ' Copy Patch in Dll
            .Position = ptrCode - 1
            .WriteBinStr (sNewCode, 16)
            Print "\n\nRemplacement du code fait"
        Else
            Print "\n\nJe ne trouve pas le code à remplacer\n\n    Terniné : rien fait"   
        End If
        .Close
    Else                ' Jan 2010
        Print "\n\nImpossible d'ouvrir le fichier : \"";sFileDll;"\""
        Print "     PROBABLEMENT DEJA OUVERT PAZR 'MOI' OU UNE AUTRE APPLICATION"
    End If
End With
'
FINISHED:
' PATCH ANOTHER DLL OR NOT
If MessageDlg("Voulez patcher une autre Dll ???", mtConfirmation, mbOK OR mbNo, 0) <> IdOk Then
    Application.Terminate
End If
'
Goto PATCHFILE
' -----------------------------------------------------------------------------
' ---- Fin du code patch de Dll -----------------------------------------------




+++++++++++++
ANNEXE 2  +++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

' ====== Mon FBinRQ.Ini ====================
[RAPIDQ PATH FILE]
RCEXE_PATHFILENAME=d:\Rapid-Q\RC_107.Exe
RQLIBS_DIR=d:\Rapid-Q\Libs
RQINC_DIR=d:\Rapid-Q\Includes

[FREEBASIC PATH]
FB_ROOT_DIR=d:\FreeBasic_020b\
FB_LIB_DIR=d:\FreeBasic_020b\Lib
FB_INC_DIR=d:\FreeBasic_020b\Inc

[COMPILING OPTIONS]
FLAG_ENCRYPT=0
FLAG_CONSOLE=1
FLAG_RUN=1
FLAG_CREATE_EXE=1
FLAG_OPTIMIZE=0
FLAG_VERBOSE=0
FLAG_SHOW_COMPILER_OUTPUT=1
FLAG_FBRECOMPILE=1
FLAG_KILL_FILES=0
FLAG_ADDDLL=0
FLAG_UPX=0
FLAG_FB16=0
FLAG_LANG_DEPRECATED=0
FLAG_LANG_FB=0
FLAG_LANG_FB_LITE=0
FLAG_LANG_QB=0
FLAG_DIRICON=1
FLAG_BEEP=1
FLAG_SHOW_WARNINGS=0
FLAG_FORCE_GUI_DEFAULT_ICON=0
FLAG_FB_TIMOUT=1
FLAG_COUNTBUILDS=1
FLAG_DEFAULT_MANIFEST=0
FLAG_BCK=0

[COMPILING PARAMATER]
WAIT_TIME_FILE_EXISTS=2
PRECOMPILER_BEFORE_LINE=50
PATH_FILES_OK_PRESENT=1
EMBEDDED_DLL_NAME=RQ32.DLL
FLAG_USE_RAPIDQEX=1

[FINAL COMPILE BEEP]
FREQ_SUCCESS=3000
DURA_SUCCESS=3
FREQ_ERROR=500
DURA_ERROR=6

[OUTPUT WINDOW]
OUTPUT_WINDOW_TOP=181
OUTPUT_WINDOW_LEFT=116
OUTPUT_WINDOW_WIDTH=1408
OUTPUT_WINDOW_HEIGHT=677
OUTPUT_WINDOW_FONT_COLOR=8388608
OUTPUT_WINDOW_COLOR=15719391
OUTPUT_WINDOW_FONT_SIZE=12
OUTPUT_WINDOW_ERROR_FONT_COLOR=8388608
OUTPUT_WINDOW_ERROR_COLOR=16637695

[HELP_WINDOW]
HELP_WINDOW_COLOR=12316352
HELP_WINDOW_FONT_COLOR=8388608
HELP_WINDOW_WIDTH=850
HELP_WINDOW_HEIGHT=600
HELP_WINDOW_FONT_SIZE=12
' === FIN Mon FBinRQ.Ini ===================




+++++++++++++
ANNEXE 3  +++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

' ------------------------------------------------------------------------
' ReadMeFirst          Installe FBinRQ          April 20th, 2009   Jacques
' ------------------------------------------------------------------------

FBinRQ requière une version de FreeBasic installée sur votre ordinateur.
FreeBasic s'installe très facilement, il suffit de lancer
FreeBASIC-v0.20.0b-win32.exe et de répondre OUI smile
Je recommande juste de ne pas l'installer sur votre disque C:

Fichiers devant se trouver dans votre répertoire FBinRQ (voir çi dessous
pour les adresses de téléchargement):
- FBinRQ.Exe            dans cette distribution
- FBinRQ.Ini            dans cette distribution
- FBinRQ_IDE.Exe        dans cette distribution      (facultatif)
- ResHacker.Exe         at http://angusj.com/resourcehacker/
- Upx.Exe               http://upx.sourceforge.net/       (ou une autre version)
- RQ32.Dll              RapidQ32.Dll renommée RQ32.Dll Snakedile V109 recommendée
                        à http://www.freewebs.com/snakedile/


Détails pour les nuls
---------------------

- créer un répertoire \FBinRQ (de préférence dans votre rérertoire RapidQ)

- copiez-y FBinRQ.Exe, FBinRQ.Ini et FBinRQ_IDE.Exe de cette distribution
  Il est recommandé de copier tous les fichiers de cette distribution avec
  leurs repertoire dans ce répertoire. Cela vous aidera à connaître FBinRQ.
 
- télécharger ResHacker à      http://angusj.com/resourcehacker/
  Cette version de Resource Hacker est disponible depuis 2002 et est utilisée
  par des milliers de personnes ; si elle était virusée, ce se saurait
  maintenant. Seul le fichier ResHacker.Exe doit être copié dans le
  répertoire /FBinRQ, ResHacker.Hlp est utile aussi mais n'est pas
  indispensable (Sous Vista, il faut installer un logiciel pour que ces
  fichiers .Hlp soit ouvrable). Ne vous laissez pas impressionner pas le
  mot 'hacker'.
 
- télécharger UPX à http://upx.sourceforge.net/  dernière version ou autre
  adresse du fichier :  http://upx.sourceforge.net/download/upx303w.zip
  Copiez uniquement UPX.EXE dans le répertoire \FBinRQ
 
- copier RapidQ32.Dll dans le répertoire \FBinRQ et le renommer RQ32.Dll
  FbinRQ préfère RapidQ32.Dll V109 de Snakedile à télécharger à
  http://www.freewebs.com/snakedile/   ou directement à
  http://www.freewebs.com/snakedile/snakedile109.zip
   
- télécharger FREEBASIC V020B à  http://www.freebasic.net/  ou à
  http://www.freebasic.net/forum/viewtopic.php?t=11955   ou directement à
  http://downloads.sourceforge.net/fbc/Fr … e?download
  Executez simplement le fichier d'installation, je suggére d'installer
  FreeBasic dans d:\FreeBasic_V020B\ ...
  Télecharger aussi l'excellente doc FreeBasic à
  http://downloads.sourceforge.net/fbc/FB … p?download

- vous devez éditer FBinRQ.Ini et adapter le nom des répertoires RapidQ et
  FreeBasic afin qu'ils correspondent a vos installations. Ceci se fait dans
  les six lignes suivantes en tête de FBinRQ.Ini

  [RAPIDQ PATH FILE]
  RCEXE_PATHFILENAME=d:\Rapid-Q\RC_107.Exe
  RQLIBS_DIR=d:\Rapid-Q\Libs
  RQINC_DIR=d:\Rapid-Q\Includes

  [FREEBASIC PATH]
  FB_ROOT_DIR=d:\FreeBasic_020B\
  FB_LIB_DIR=d:\FreeBasic_020B\Lib
  FB_INC_DIR=d:\FreeBasic_020B\Inc

  Ne changez rien aux lignes suivantes tant que vous n'avez pas fait quelques
  tests de compilation avec FBinRQ


Il est fortement recommandé que vous copiez une version de RapidQ32.Dll dans
votre répertoire système c:\Windows (ou autre). Ceci vous permettra de créer
des exécutables 'Tiny' sans qu'il soit nécessaire de copier RapidQ32.Dll
dans leurs répertoires.

Vous pouvez maintenant lancer FBinRQ_IDE.Exe et compiler les exemples et
tous vos code RapidQ. Pour des code console contenant les mots Locate,
Inkey$, ... il faudra patcher RapidQ32.Dll comme indiqué ci dessus.
Print fonctionne sans patchage de RapidQ32.Dll.
FBinRQ_IDE.Exe est une simple IDE qui devrait vous aider à commencer à
utiliser FBinRQ, après il faudra lancer FBinRQ depuis votre IDE favorite
FREEQ, JFE, ...

Compatibilité avec les versions FreeBasic :
Tous les exemples ont été compliés avec FB017a et FB020B sans problèmes.
Avec FB016, il faut parfois ajouter ''pre cmd FB016 (cela ajoute simplement
'option byval' et 'option explicit' en tête du code du 'lanceur de bytecode'
ecrit ici en Freebasic).

Au démarrage FBinRQ vérifie que tous les fichiers nécessaires et tous les
répertoires configurés existent.


Jacques
--------------------------------------------------------------------------

Hors ligne

 

#2 28-07-2010 13:07:01

Erdemal
Membre
Lieu: Gelbique
Date d'inscription: 28-03-2005
Messages: 109

Re: Doc FBinRQ en Français

FBinRQ.Exe V0883 avec doc en français inclue

http://users.teledisnet.be/web/jph01696 … 883_FR.zip

Hors ligne

 

#3 29-07-2010 02:36:50

papi
Membre
Lieu: 43
Date d'inscription: 06-06-2005
Messages: 429

Re: Doc FBinRQ en Français

binjour
puisque tu est là Jacques
que fait de special , le FBinRQTiny.exe ???....
merci
A+
papi

Hors ligne

 

#4 29-07-2010 11:35:39

Erdemal
Membre
Lieu: Gelbique
Date d'inscription: 28-03-2005
Messages: 109

Re: Doc FBinRQ en Français

papi a écrit:

binjour
puisque tu est là Jacques
que fait de special , le FBinRQTiny.exe ???....
merci
A+
papi

Me souvenais plus où on trouve ça smile

Bon, dans la version 0790, FBinRQ.Exe est une compilation faite avec FBinRQ et l'option ''pre cmd adddll, elle contient donc RapidQ32.Dll qui est 'recrachée' à l'exécution. Cette version ne nécessite pas de copier RapidQ32.Dll dans le répertoire de Windows ou dans le répertoire de FBinRQ.Exe ... c'est plus simple pour les débutants ... s'il y en a smile. Cette version fait 400K.

FBinRQTiny.Exe est la compilation du même code mais faite avec ''pre cmd noadddll, c'est à dire que RapidQ32.Dll n'est pas inclue, il faudra donc que l'utilisateur copie lui même RapidQ32.Dll dans le repertoire de Window, il pourra alors renommer FBinRQTiny.Exe en FBinRQ.Exe ... qui devrait être un chouia plus rapide. Cette version fait 75K.


Jacques

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr