Ici un petit prg pour les compiler dans un fichier type *.res du répertoire Residents
Code : Tout sélectionner
;{- Enumerations / DataSections
;{ Windows
Enumeration
#Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
#String_0
#String_2
#String_5
#Text_0
#Text_2
#Text_5
#Button_0
#Button_2
#Button_5
#Editor_41
#Button_11
#Button_12
#Button_13
EndEnumeration
Dim fic${256}(20)
Dim res${256}(20)
;}
Define.l Event,EventWindow,EventGadget,EventType,EventMenu
;}
Procedure OpenWindow_Window_0()
If OpenWindow(#Window_0,398,69,800,446,"Aide pour créer un résident",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_TitleBar)
StringGadget(#String_0,145,20,520,25,"")
StringGadget(#String_2,145,65,520,25,"")
StringGadget(#String_5,145,115,520,25,"")
TextGadget(#Text_0,10,20,125,25," Nom de la librairie",#PB_Text_Center | #SS_CENTERIMAGE)
TextGadget(#Text_2, 10, 65, 125, 25, "Nom de la source", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Text_5, 10, 115, 125, 25, "Path et nom du résident", #PB_Text_Center|#SS_CENTERIMAGE)
ButtonGadget(#Button_0, 690, 20, 100, 25, "Parcourir")
ButtonGadget(#Button_2, 690, 65, 100, 25, "Parcourir")
ButtonGadget(#Button_5, 690, 110, 100, 25, "Parcourir")
EditorGadget(#Editor_41, 20, 205, 760, 235)
; Font1 = LoadFont(#PB_Any, "Courier New" , 8, #PB_Font_Bold )
Font1 = LoadFont(#PB_Any, "Courier New" , 8)
SetGadgetFont(#Editor_41, FontID(Font1))
ButtonGadget(#Button_11, 180, 155, 150, 30, "Création du Batch")
ButtonGadget(#Button_12, 360, 155, 100, 30, "OK Créez")
ButtonGadget(#Button_13, 690, 155, 100, 30, "Terminer")
GadgetToolTip(#String_0,"Donnez ou cherchez le nom du dossier où se troube purebasic.exe")
GadgetToolTip(#Button_0,"Donnez ou cherchez le nom du dossier où se troube purebasic.exe")
GadgetToolTip(#String_2,"Donnez ou cherchez le nom du fichier source en *.pbx")
GadgetToolTip(#Button_2,"Donnez ou cherchez le nom du fichier source en *.pbx")
GadgetToolTip(#String_5,"Donnez ou cherchez le nom du fichier dans le repertoire RESIDENT en *.res")
GadgetToolTip(#Button_5,"Donnez ou cherchez le nom du fichier dans le repertoire RESIDENT en *.res")
EndIf
EndProcedure
OpenWindow_Window_0()
;{- Event loop
Repeat
Event = WaitWindowEvent()
Select Event
; ///////////////////
Case #PB_Event_Gadget
EventGadget = EventGadget()
EventType = EventType()
If EventGadget = #String_0
ElseIf EventGadget = #String_2
ElseIf EventGadget = #String_5
PathFil_Res$=GetGadgetText(#String_5)
ElseIf EventGadget = #Text_0
ElseIf EventGadget = #Text_2
ElseIf EventGadget = #Text_5
;************************************************************** BOUTON Parcourir LIB PB ***********************************************************
ElseIf EventGadget = #Button_0 ; bouton recherche chemin principal de PB
Path_lib$ = PathRequester("Donnez la librairie PureBasic", "L:\program Files\purebasic")
SetGadgetText(#String_0, Path_lib$)
SetGadgetText(#String_2, Path_lib$)
SetGadgetText(#String_5, Path_lib$+"RESIDENTS\")
;****************************************************** BOUTON Parcourir du prg.pb qui va faire un résident ********************************
ElseIf EventGadget = #Button_2 ; recherche prg.pb qui va faire un résident
; FichierParDefaut$ = "L:\program files\PB431\"; Répertoire et fichier par défaut qui seront affichés
FichierParDefaut$ = Path_lib$; Répertoire et fichier par défaut qui seront affichés
; Avec la chaîne suivante nous allons définir les filtres ("|" comme séparateur) pour l'affichage de fichier :
; 1er : "Texte (*.txt)" comme nom, ".txt" et ".bat" comme extension autorisée
; 2ème : "PureBasic (*.pb)" comme nom, ".pb" comme extension autorisée
; 3ème : "Tous les fichiers (*.*)" comme nom, "*.*" comme extension autorisée, valide pour tous les fichiers
Filtre$ = "PureBasic (*.pb)|*.pb|Tous les fichiers (*.*)|*.*"
Filtre = 0 ; utiliser par défaut le premier des trois filtres possibles
Path_Src$ = OpenFileRequester("Choisissez un fichier source", FichierParDefaut$, Filtre$, Filtre)
SetGadgetText(#String_2, Path_Src$)
;****************************************************** BOUTON Parcourir pour donner le nom du résident ********************************
ElseIf EventGadget = #Button_5
; Path_Res$ = PathRequester("Donnez le Chemin et dans la zone ,le nom du résident ", GetGadgetText(#String_5))
FichierParDefaut$ = Path_lib$+"RESIDENTS\defaut.res"; Répertoire et fichier par défaut qui seront affichés
Filtre$ = "Pb résident (*.res)|*.res |Tous les fichiers (*.*)|*.*"
Path_Res$ = OpenFileRequester("Donnez le Nom d'un résident existant ou pas ", FichierParDefaut$, Filtre$, Filtre)
SetGadgetText(#String_5, Path_Res$)
PathFil_Res$=GetGadgetText(#String_5)
; If FileSize(PathFil_Res$)>0
; If MessageRequester("ATTENTION LE FICHIER EXISTE DEJA ", "Voulez vous l'écraser", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
; Else
; PathFil_Res$=""
; EndIf
; EndIf
ElseIf EventGadget = #Editor_41
; Debug event
;************************************************************** BOUTON Création du Batch ***********************************************************
ElseIf EventGadget = #Button_11
; If FileSize(PathFil_Res$)>0
; If MessageRequester("ATTENTION FICHIER "+pathfil_res$+" EXISTE DEJA ", "Voulez vous l'écraser", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
; Else
; PathFil_Res$=""
; SetGadgetText(#String_5, Path_lib$+"RESIDENTS\")
; EndIf
; EndIf
If Path_lib$<>"" And Path_Src$<>"" And GetFilePart(PathFil_Res$)<>""
ft$=Space(255)
mask$="%YY"+Str(DayOfYear(Date()))
fp$="PB"+FormatDate(mask$,Date())
fb$=Path_lib$+fp$+".BAT"
; GetTempFileName_(@U$,@fp$,000,@ft$)
asci$ = Space($FFF)
ASCII$="ECHO off"+Chr(10)
; ASCII$+"pushd "+Chr(34)+path_lib$+Chr(34)+Chr(10)
; ASCII$+"If (%2+CHR(10)==() Goto erreurf")
ASCII$+"If exist "+Chr(34)+PathFil_Res$+Chr(34)+ " del "+Chr(34)+ PathFil_Res$+Chr(34)+Chr(10)
ASCII$+ Chr(34)+Path_lib$+"compilers\pbcompiler"+Chr(34)+" "+Chr(34)+Path_Src$+Chr(34) + " /RESIDENT " +Chr(34)+ PathFil_Res$+Chr(34)+Chr(10)
ClearGadgetItems(#Editor_41)
AddGadgetItem(#Editor_41,-1,"REM Fichier "+fb$)
AddGadgetItem(#Editor_41,-1, ASCII$)
AddGadgetItem(#Editor_41,-1, "ECHO TAPEZ EXIT TAPEZ EXIT TAPEZ EXIT TAPEZ EXIT TAPEZ EXIT TAPEZ EXIT TAPEZ EXIT TAPEZ EXIT")
Else
MessageRequester("ATTENTION l'une de ces zones n'est pas correcte ", "Lib="+Path_lib$+Chr(10)+"Source="+Path_Src$+Chr(10)+"Resident="+PathFil_Res$)
EndIf
;************************************************************** BOUTON OK ***********************************************************
ElseIf EventGadget = #Button_12 ; Bouton OK
Texte$ = GetGadgetText(#Editor_41)
For k=1 To 20
fic$(k)=StringField(Texte$, k, Chr(34))
If Len(fic$)=0
mf=k
EndIf
If RTrim(LTrim(UCase(fic$(k-1))))="DEL"
fic2$=fic$(k)
EndIf
If RTrim(LTrim(UCase(fic$(k-1))))="/RESIDENT"
fic3$=fic$(k)
EndIf
Next
fic2$=RTrim(LTrim(fic2$))
fic3$=RTrim(LTrim(fic3$))
; Debug f_s(fic2$)+f_s(fic3$)
If FileSize(fic2$)>0
If fic2$=fic3$
If MessageRequester("ATTENTION FICHIER "+fic2$+" EXISTE DEJA ", "Voulez vous l'écraser", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
Else
PathFil_Res$=""
EndIf
Else
If MessageRequester("ATTENTION FICHIER "+fic2$+" EXISTE DEJA ", "Voulez vous le supprimer"+Chr(10)+"et créer "+fic3$, #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
Else
PathFil_Res$=""
EndIf
EndIf
EndIf
Texte$ = GetGadgetText(#Editor_41)
If Texte$<>"" And PathFil_Res$<>""
FB.l=CreateFile(#PB_Any,fb$)
WriteData(FB, @Texte$, Len(Texte$))
CloseFile(FB)
prg=RunProgram("cmd"," /C "+ Chr(34)+fb$+Chr(34) ,"",30)
If prg
AddGadgetItem(#Editor_41,-1,"******************************** R E S U L T A T S *******************************************")
s_ascii$=ReadProgramString(prg)
Texte$=s_ascii$
OemToChar_(@s_ascii$,@s_ascii$)
texte2$=s_acii$+Chr(10)
Resultat=AddGadgetItem(#Editor_41,-1,s_ansi$)
While ProgramRunning(prg)
s_ascii$=ReadProgramString(prg)
OemToChar_(@s_ascii$,@s_ascii$)
Resultat=AddGadgetItem(#Editor_41,-1,s_ascii$)
texte2$+s_ascii$+Chr(10)
Wend
EndIf
; Debug texte2$
; Debug Len(texte2$)
For k=1 To 20
res$(k)=StringField(texte2$,k,Chr(10))
p_r=FindString(UCase(res$(k)),"RESIDENT",1)
p_c=FindString(UCase(res$(k)),"CREATED",1)
If p_r<>0
mp_r=p_r
If p_c<>0
mp_c=p_c
mk=k
EndIf
EndIf
Next
EndIf
ElseIf EventGadget=#Button_13
If mk>0 And mp_r>0 And mp_c>0
Resultat=DeleteFile(fb$)
CloseWindow(#Window_0)
Break
Else
If MessageRequester("Vous n'avez pas réussi à créer "+Chr(10)+"Le résident ="+PathFil_Res$,"Voulez-vous continuer ? Oui ou Non",#PB_MessageRequester_YesNo)=#PB_MessageRequester_Yes
Else
Resultat=DeleteFile(fb$)
CloseWindow(#Window_0)
Break
EndIf
EndIf
EndIf
; ////////////////////////
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_0
CloseWindow(#Window_0)
Break
EndIf
EndSelect
ForEver
;
exemple de macros à compiler dans un fichier type *.res du répertoire Residents
Une petite question à Fred peut-on connaître la structure ERUP ...N° 5 des fichiers *.res dans le répertoire Residents ?
Chacune des entités Structures, Constantes, Interfaces et Macros ont une structure particulière enfin je crois.