Pi.res

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
SORLET
Messages : 14
Inscription : lun. 02/janv./2006 7:55
Localisation : Montreuil-sous-Bois

Pi.res

Message 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.
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Génère un fichier PB avec les contantes que tu veux et compile le avec Tailbite.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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 :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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 8O
Pour l'utilitaire je suis d'accord!! C'est pas du tout difficile à faire du coup

Dri :10:
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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 :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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 ^^
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message 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...
:oops: 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
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message 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.
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message 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
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message 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)
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

L'exe si vous préferez,

File:1->ResCreator.exe
Image
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message par Gillou »

Ouais ton outil est génial, mais regarde la commande restartcompiler()

ça devrait t'intéresser Denis
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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 ?
Gillou
Messages : 373
Inscription : sam. 28/août/2004 17:35
Localisation : Bretagne, 22
Contact :

Message 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
Répondre