Page 1 sur 2
Pi.res
Publié : sam. 21/janv./2006 12:54
par SORLET
J'ai une question pour le soldat inconnu.
J'ai installé ta variable Pi dans le dossier résident. Je trouve cette manière très élégante, aussi j'aimerais savoir comme écrire un fichier *. res. Y a-t-il un langage spécial ? J'ai ouvert Pi.res avec plusieurs éditeurs et je lis ceci
ERUP 3SERTCRS TSNC Pi Û I@
. C'est plutôt sibyllin.
Publié : sam. 21/janv./2006 12:56
par Droopy
Génère un fichier PB avec les contantes que tu veux et compile le avec Tailbite.
Publié : sam. 21/janv./2006 13:03
par comtois
tu peux aussi le faire avec PBCompiler qui se trouve dans le répertoire compilers.
tu écris les résidents que tu souhaites dans un fichier texte.
et ensuite tu lances dans une console dos :
PBCompiler "le nom de ton fichier texte"
/RESIDENT "le nom de ton fichier résident"
ça pourrait être bien de faire un petit utilitaire pour ça , dans le même style que le dllimporter , deux champs pour saisir le chemin des fichiers , et une touche "start", je vais peut-être le faire si je trouve un peu de temps

Publié : sam. 21/janv./2006 14:46
par Dr. Dri
comtois a écrit :tu peux aussi le faire avec PBCompiler qui se trouve dans le répertoire compilers.
tu écris les résidents que tu souhaites dans un fichier texte.
et ensuite tu lances dans une console dos :
PBCompiler "le nom de ton fichier texte"
/RESIDENT "le nom de ton fichier résident"
ça pourrait être bien de faire un petit utilitaire pour ça , dans le même style que le dllimporter , deux champs pour saisir le chemin des fichiers , et une touche "start", je vais peut-être le faire si je trouve un peu de temps

J'ai bô avoir maté les directives de compilation, celle ci je l'ai jamais remarquée

Pour l'utilitaire je suis d'accord!! C'est pas du tout difficile à faire du coup
Dri

Publié : sam. 21/janv./2006 14:56
par comtois
en fait ce qui serait bien c'est que ce soit pris en charge directement par l'IDE ! soit par le biais d'une option du compilateur , ou le biais d'un outil supplémentaire.
en attendant on peut toujours se faire un plugin

Publié : sam. 21/janv./2006 15:00
par Dr. Dri
Bah comme tu viens de le souligner c'est faisable via l'IDE... Il suffit d'ajouter la directive de compilation dans les options de compilation...
Même pas besoin de plugin...
(enfin bon un tool IDE "made in Fantaisie Software" je dis pas nan =)
Dri ^^
Publié : sam. 21/janv./2006 15:03
par comtois
Dr. Dri a écrit :Bah comme tu viens de le souligner c'est faisable via l'IDE... Il suffit d'ajouter la directive de compilation dans les options de compilation...

je n'avais pas regardé de ce côté
moi je pensais plutôt à des boutons options pour sélectionner la directive de compilation
générer le fichier asm du source
générer un fichier résident
etc
Publié : sam. 21/janv./2006 16:01
par gansta93
Il y avait un programme fait par Marc pour ça. Enfin il ne faisait pas le resident mais le reste si ou presque.
Publié : jeu. 26/janv./2006 17:00
par Gillou
J'avais fait ce prog il y un petit bout de temps, j'ai remis les commandes nécessaire au fonctionnement du programme. Il était dans une librairie.
Si vous avez des difficultés

, ou si j'ai oublié une commande
; Gillou
; Purebasic 3.94
; Ligne de commande : L'adresse du fichier
; Arguments : %FILE
; Nom : Resident Creator
; Vous puvez ajouter un raccourci si ça vous chante
ProcedureDLL.s GetPBPath() ; Retourne le dossier d'installation de PureBasic
path.s = "Applications\PureBasic.exe\shell\open\command"
If RegOpenKeyEx_ ( #HKEY_CLASSES_ROOT , path, 0, #KEY_ALL_ACCESS , @Key) = #ERROR_SUCCESS
indir.s = Space (500)
insize = 500
If RegQueryValueEx_ (Key, "" , 0, 0, @indir.s, @insize) = #ERROR_SUCCESS
RegCloseKey_ (Key)
indir = RemoveString (indir, "%1" , 1)
indir = RemoveString (indir, Chr (34), 1)
indir = RTrim (indir)
path = GetPathPart (indir)
Else
RegCloseKey_ (Key)
ProcedureReturn ""
EndIf
EndIf
If Path
ProcedureReturn Path
EndIf
EndProcedure
ProcedureDLL.s ProgramParameterA() ; Retourne tout le texte en paramètre
Repeat
m$ = ProgramParameter ()
If m$ And ma$ : ma$ = ma$ + " " + m$ : ElseIf m$ And ma$= "" : ma$ = m$ : EndIf
Until m$ = ""
ProcedureReturn ma$
EndProcedure
ProcedureDLL ListWind() ; Retourne le nombre de fenêtres actuellement active
Structure TH
txt.s
hwnd.s
EndStructure
Global listwins
If listwins=0 : NewList wind.th() : listwins=1 : Else : ClearList (wind()) : EndIf
hWnd.l = FindWindow_ ( 0, 0 )
While hWnd <> 0
If GetWindowLong_ (Hwnd, #GWL_STYLE ) & #WS_VISIBLE = #WS_VISIBLE ; pour lister que les fenêtres visibles
If GetWindowLong_ (Hwnd, #GWL_EXSTYLE ) & #WS_EX_TOOLWINDOW <> #WS_EX_TOOLWINDOW ; pour lister que les fenêtres qui ne sont pas des ToolWindow ou barre d'outils
txt.s = Space (256)
GetWindowText_ (hwnd, txt, 256)
If txt <> ""
AddElement (wind()) : wind()\txt=txt : wind()\hwnd= Str (hwnd)
EndIf
EndIf
EndIf
hWnd = GetWindow_ (hWnd, #GW_HWNDNEXT )
Wend
ProcedureReturn CountList (wind())
EndProcedure
ProcedureDLL.s SelectWind(Number, Option) ; Retourne le titre de la fenêtre sélectionnée (Number doit être compris entre 0 et ListWindows()-1)
If listwins=1
If CountList (wind())>0
If number=<CountList(wind())-1
SelectElement (wind(),number)
If option=1
ProcedureReturn wind()\txt
Else
ProcedureReturn wind()\hwnd
EndIf
EndIf
EndIf
EndIf
EndProcedure
ProcedureDLL.s GetFilePartWithoutExt(File.s) ; Retourne le nom du fichier sans l'extension
File.s = GetFilePart (File.s)
If Len ( GetExtensionPart (File.s)) <> 0
ProcedureReturn Left (File.s, Len (File.s) - Len ( GetExtensionPart (File.s)) - 1)
EndIf
ProcedureReturn File.s
EndProcedure
ProcedureDLL RestartCompiler2()
#PB_MSG_RESTART_COMPILER = 10174
n=ListWind()
For a=1 To n-1
WText$=SelectWind(a,1)
If Left (WText$, 12)= "PureBasic - "
If WText$<> "PureBasic - Visionneuse de fichiers" And WText$<> "PureBasic - File Viewer" And WText$<> "PureBasic - Dateibetrachter"
hPBIDE = Val (SelectWind(a,0))
EndIf
EndIf
Next
ProcedureReturn PostMessage_ (hPBIDE, RegisterWindowMessage_ ( "PB_MSG_ID" ), #PB_MSG_RESTART_COMPILER , 0)
EndProcedure
file$ = ProgramParameterA()
If GetExtensionPart ( UCase (file$)) = "PB"
Compiler$ = GetPBPath()+ "Compilers\PBCompiler.exe"
Resident$ = GetPBPath()+ "Residents\" +GetFilePartWithoutExtension(file$)+ ".res"
res$=ExecuteProgram(Compiler$, "/RESIDENT " + #Q +Resident$+ #Q + " " + #Q +file$+ #Q ,1)
n= CountString (res$, #CRLF$ )
Repeat
in=in+1
l$=MidField(res$,in, #CRLF$ )
If FindString ( UCase (l$), "ERROR" ,0)=1
Error$=l$
EndIf
If FindString ( UCase (l$), "CREATED" ,0)
Creer=1
EndIf
Until in=n+1
RestartCompiler()
LE = GetLastError()
If LE=109 : LE=0 : EndIf
If IsFileExist(Resident$) And Creer=1 And error$= "" And LE=0
MSGP( "ResCreator" , "Le resident '" +GetFilePartWithoutExt(file$)+ ".res" + "' a été créé." + #CRLF$ + #CRLF$ + "Dossier de destination : " + GetPathPart (resident$)+ #CRLF$ + #CRLF$ + "Taille : " + Str ( FileSize (Resident$))+ " Octets" , 0,4)
Else
res=MSGP( "ResCreator" , error$+ #CRLF$ + #CRLF$ + "Code : " + Str (LE)+ #CRLF$ + #CRLF$ +GetLastErrorAsText(LE)+ #CRLF$ + #CRLF$ + "Voulez-vous supprimer le résident créé et relancer le compilateur?" ,4,3)
If res=6
DeleteFile (Resident$)
RestartCompiler2()
EndIf
EndIf
EndIf
Publié : jeu. 26/janv./2006 17:03
par Gillou
J'allais oublié, c'est un petit programme pour créer les résidents
Pour le faire fonctionner, vous le compilez et vous le mettez dans les outils personnalisés (au début du fichier, il y a les configurations)
Publié : jeu. 26/janv./2006 17:04
par Gillou
L'exe si vous préferez,
File:1->
ResCreator.exe

Publié : jeu. 26/janv./2006 18:45
par Anonyme2
il y a aussi mon outil qui est
ici
C'est un fichier exe pour créer des librairies asm et aussi des résidents
Tu fais un fichier pb avec tes constantes, tu l'enregistres puis tu lances mon outil et tu cliques sur le bouton 'créer un résident' et ça le crée et l'installe dans le bon dossier, tu relances ensuite le compilateur pb (menu compilateur/redémarrer le compilateur) pour que le résident soit pris en compte
Publié : ven. 27/janv./2006 1:46
par Gillou
Ouais ton outil est génial, mais regarde la commande restartcompiler()
ça devrait t'intéresser Denis
Publié : ven. 27/janv./2006 7:34
par Anonyme2
Gillou a écrit :Ouais ton outil est génial, mais regarde la commande restartcompiler()
ça devrait t'intéresser Denis
Tu pourrais m'expliquer ?
Publié : ven. 27/janv./2006 10:38
par Gillou
ça serait sympa que ton prog relance le compilateur une fois que la constante a été créée dans résidents
Denis a écrit
tu relances ensuite le compilateur pb (menu compilateur/redémarrer le compilateur) pour que le résident soit pris en compte