Recherche dans fichier
Publié : mar. 08/oct./2013 12:09
Pour ceux qui on l'utilité, je vous met un petit logiciel pour rechercher dans un (ou plusieurs) fichier un mot ou une phrase.
Moi je l'utilise pour rechercher une procedure dans tous mes codes PureBasic
Moi je l'utilise pour rechercher une procedure dans tous mes codes PureBasic
Code : Tout sélectionner
Enumeration
#Fenetre
#Repertoire
#Fichier
#Editor
#String
#Button1
#Button2
#List
#FichierLecture
#Combo
#Entrer
#Check
#Directory
#Extention
#Bar
EndEnumeration
Global Nom$,Repertoire$,Racine$,Extention$
Global Dossier$,AncienElement
Dossier$ = GetHomeDirectory()
Procedure Recherche(Dossier$)
If ExamineDirectory(#Repertoire,Dossier$,"*."+Extention$)
While NextDirectoryEntry(#Repertoire)
If DirectoryEntryType(#Repertoire) = #PB_DirectoryEntry_File
If ReadFile(#Fichier, Dossier$+DirectoryEntryName(#Repertoire))
file = file +1
Ligne = -1
While Eof(#Fichier)=0
Ligne = Ligne + 1
If FindString(ReadString(#Fichier),Nom$,0,#PB_String_NoCase)
NomListe$ = RemoveString(Dossier$+DirectoryEntryName(#Repertoire),Racine$,0,1,1)
If NomListe$ = MemeNomListe$
AddGadgetItem(#List,-1,NomListe$,0,1)
Else
AddGadgetItem(#List,-1,NomListe$,0,0)
EndIf
MemeNomListe$ = NomListe$
SetGadgetItemData(#List,CountGadgetItems(#List)-1,Ligne)
EndIf
Wend
CloseFile(#Fichier)
EndIf
EndIf
Wend
FinishDirectory(#Repertoire)
EndIf
EndProcedure
Procedure.s ParseDirectory(folder.s, id.l = 0)
If Right(folder, 1) <> "\"
folder + "\"
EndIf
If ExamineDirectory(id, folder, "*.*")
While NextDirectoryEntry(id)
If DirectoryEntryName(id) <> "." And DirectoryEntryName(id) <> ".."
If DirectoryEntryType(id) = #PB_DirectoryEntry_Directory
AddGadgetItem(#Editor,-1,Chr(10)+folder + DirectoryEntryName(id))
;Debug folder + DirectoryEntryName(id)
ParseDirectory(folder + DirectoryEntryName(id), id + 1)
EndIf
EndIf
Wend
FinishDirectory(id)
EndIf
EndProcedure
Procedure InitLogiciel()
OpenPreferences("Init.log")
PreferenceGroup("Fenetre Logiciel")
Etat = ReadPreferenceLong ("Etat_Fenetre_Logiciel",#PB_Window_Normal)
If Etat = #PB_Window_Normal
SetWindowState(#Fenetre,#PB_Window_Normal)
ResizeWindow(#Fenetre,ReadPreferenceLong ("Fenetre_LogicielX", 0),ReadPreferenceLong ("Fenetre_LogicielY", 0),ReadPreferenceLong ("Fenetre_Logiciel_Largeur", 600), ReadPreferenceLong ("Fenetre_Logiciel_Hauteur", 400))
Else
SetWindowState(#Fenetre,Etat)
EndIf
PreferenceGroup("Extention")
For Elt = 0 To 10
AddGadgetItem(#Extention,-1,ReadPreferenceString("Extention"+Str(Elt),"*"))
Next Elt
SetGadgetState(#Extention,ReadPreferenceLong("Element",0))
PreferenceGroup("Dossier")
Dossier$ = ReadPreferenceString("Dossier",GetHomeDirectory())
SetGadgetText(#Combo,Dossier$)
SetGadgetState(#Check,ReadPreferenceLong("Sous_dossier",#PB_Checkbox_Unchecked))
ClosePreferences()
EndProcedure
Procedure SauveInitLogiciel()
CreatePreferences("Init.log",#PB_Preference_GroupSeparator)
PreferenceGroup("Fenetre Logiciel")
WritePreferenceLong ("Etat_Fenetre_Logiciel", GetWindowState(#Fenetre))
If GetWindowState(#Fenetre) = #PB_Window_Normal
WritePreferenceLong ("Fenetre_LogicielX", WindowX(#Fenetre ))
WritePreferenceLong ("Fenetre_LogicielY", WindowY(#Fenetre ))
WritePreferenceLong ("Fenetre_Logiciel_Largeur", WindowWidth(#Fenetre))
WritePreferenceLong ("Fenetre_Logiciel_Hauteur", WindowHeight(#Fenetre))
EndIf
PreferenceGroup("Extention")
For Elt = 0 To 5
WritePreferenceString("Extention"+Str(Elt), GetGadgetItemText(#Extention,Elt))
Next Elt
WritePreferenceLong ("Element",AncienElement)
PreferenceGroup("Dossier")
WritePreferenceString("Dossier",Dossier$)
WritePreferenceLong("Sous_dossier",GetGadgetState(#Check))
ClosePreferences()
EndProcedure
If OpenWindow(#Fenetre,0,0,600,400,"Logiciel de recherche",#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered|#PB_Window_Invisible)
WindowBounds(#Fenetre,600,400,#PB_Ignore,#PB_Ignore )
SmartWindowRefresh(#Fenetre, 1)
AddKeyboardShortcut(#Fenetre, #PB_Shortcut_Return,#Entrer)
ProgressBarGadget(#Bar,430,3,170,20,0,2)
ExplorerComboGadget(#Combo,0,0,250,20,Dossier$, #PB_Explorer_Editable)
ButtonGadget(#Button1,250,0,30,20,"...")
GadgetToolTip(#Button1,"Répertoire a choisir pour la recherche")
TextGadget(#PB_Any,0,47,80,20,"Mot à chercher:")
StringGadget(#String,80,47,120,20,"")
GadgetToolTip(#String,"Mot qui va etre rechercher dans tous les fichiers")
TextGadget(#PB_Any,0,25,80,20,"Extension fichier")
ComboBoxGadget(#Extention,80,25,60,20,#PB_ComboBox_Editable)
GadgetToolTip(#Extention,"Extention des fichiers qui vont etre ouvert pour la recherche")
ButtonGadget(#Button2,202,47,60,20,"Recherche",#PB_Button_Default)
TreeGadget(#List,0,70,265,330)
SetGadgetColor(#list,#PB_Gadget_BackColor,$FFEAA5)
GadgetToolTip(#List,"Liste de tous les fichiers trouver")
ListIconGadget(#Editor,265,30,340,370,"Ligne",50,#PB_ListIcon_FullRowSelect )
AddGadgetColumn(#Editor,1,"Texte",10000)
GadgetToolTip(#Editor,"Visualisation du fichier sélectionner")
CheckBoxGadget(#Check,290,0,140,20,"Inclure les sous-dossiers")
InitLogiciel()
HideWindow(#Fenetre,#False)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #Button1
NouveauDossier$ = PathRequester("Rechercher dans le répertoire :",Dossier$)
If NouveauDossier$
Dossier$ = NouveauDossier$
SetGadgetText(#Combo,Dossier$)
EndIf
Case #Combo
Dossier$ = GetGadgetText(#Combo)
Case #Extention
ElementExtention = GetGadgetState(#Extention)
If ElementExtention <> -1
AncienElement = ElementExtention
EndIf
Select EventType()
Case #PB_EventType_LostFocus
If ElementExtention = -1
Debug AncienElement
SetGadgetItemText(#Extention,AncienElement,GetGadgetText(#Extention))
EndIf
EndSelect
Case #Button2
ClearGadgetItems(#List)
ClearGadgetItems(#Editor)
SetGadgetState(#Bar,0)
Nom$ = GetGadgetText(#String)
Racine$ = Dossier$
Extention$ = GetGadgetText(#Extention)
If GetGadgetState(#Check) = #PB_Checkbox_Checked
Recherche(Dossier$)
ParseDirectory(Dossier$)
NbrDossier = CountGadgetItems(#Editor)
SetGadgetAttribute(#Bar,#PB_ProgressBar_Maximum,NbrDossier)
For ligne = 0 To NbrDossier
Recherche(GetGadgetItemText(#Editor,ligne,1)+"\")
SetGadgetState(#Bar,ligne)
Next ligne
Else
Recherche(Dossier$)
EndIf
Case #List
ClearGadgetItems(#Editor)
Texte$=""
If ReadFile(#FichierLecture,Racine$ + GetGadgetText(#List))
While Eof(#FichierLecture)=0
NumeroLigne + 1
AddGadgetItem(#Editor,-1,LSet(Str(NumeroLigne),6) +Chr(10)+ReplaceString(ReadString(#FichierLecture),Chr(9),Chr(32)))
Wend
CloseFile(#FichierLecture)
Element = GetGadgetItemData(#List,GetGadgetState(#List))
SetGadgetItemColor(#Editor, Element, #PB_Gadget_BackColor ,$BFFFFF)
SetGadgetState(#Editor,Element);,#PB_Tree_Selected)
EndIf
NumeroLigne = 0
EndSelect
Case #PB_Event_SizeWindow
HauteurFenetre = WindowHeight(#Fenetre)
LargeurFenetre = WindowWidth(#Fenetre )
ResizeGadget(#Editor,#PB_Ignore,#PB_Ignore,LargeurFenetre-260,HauteurFenetre-30)
SetGadgetItemAttribute(#Editor,0,#PB_ListIcon_ColumnWidth,LargeurFenetre+10000,1)
ResizeGadget(#List,#PB_Ignore,#PB_Ignore,#PB_Ignore,HauteurFenetre-50)
ResizeGadget(#Bar,#PB_Ignore,#PB_Ignore,LargeurFenetre-430,#PB_Ignore)
Case #PB_Event_Menu
If EventMenu()=#Entrer
ClearGadgetItems(#List)
ClearGadgetItems(#Editor)
SetGadgetState(#Bar,0)
Nom$ = GetGadgetText(#String)
Racine$ = Dossier$
Extention$ = GetGadgetText(#Extention)
If GetGadgetState(#Check) = #PB_Checkbox_Checked
Recherche(Dossier$)
ParseDirectory(Dossier$)
NbrDossier = CountGadgetItems(#Editor)
SetGadgetAttribute(#Bar,#PB_ProgressBar_Maximum,NbrDossier)
For ligne = 0 To NbrDossier
Recherche(GetGadgetItemText(#Editor,ligne,1)+"\")
SetGadgetState(#Bar,ligne)
Next ligne
Else
Recherche(Dossier$)
EndIf
EndIf
EndSelect
Until Event = #PB_Event_CloseWindow
SauveInitLogiciel()
EndIf
End