Un navigateur de code (Windows)
Re: Un navigateur de code (Windows)
Ok, merci.
cage
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Un navigateur de code (Windows)
Bonsoir,
Chacun de mes projets comporte son propre fichier .pbp dans son propre dossier.
Mettre à jour manuellement chaque fichier .pbp est vraiment contraignant, surtout lorsque l'on a plusieurs dizaines de projets a gérer.
Pour me faciliter la vie, je met à jour tous les fichiers .pbp en une seule passe a l'aide d'un utilitaire développé en PB (Update-pbp.pb)
mais aussi,
pour me faciliter la vie, je compile tous les fichiers .pbp en une seule passe a l'aide d'un utilitaire développé en PB (Compile-pbp.pb)
Voici l'architecture disque de mes différents projets:
Y:\PB\PB2\PROJET00\projet00.pb
Y:\PB\PB2\PROJET00\projet00.pbp
...
Y:\PB\PB2\PROJET99\projet99.pb
Y:\PB\PB2\PROJET99\projet9.pbp
Y:\PB\PB2\1-Update-pbp.pb
Y:\PB\PB2\2-Compile-pbp.pb
En réalité, chaque projet a son nom propre et non PROJETXX
Voici le code du fichier 1-Update-pbp.pb
Ce code ne crée pas les fichiers .pbp mais les mets à jour en fonctions de critères que vous pouvez modifier a votre guise.
cage
Chacun de mes projets comporte son propre fichier .pbp dans son propre dossier.
Mettre à jour manuellement chaque fichier .pbp est vraiment contraignant, surtout lorsque l'on a plusieurs dizaines de projets a gérer.
Pour me faciliter la vie, je met à jour tous les fichiers .pbp en une seule passe a l'aide d'un utilitaire développé en PB (Update-pbp.pb)
mais aussi,
pour me faciliter la vie, je compile tous les fichiers .pbp en une seule passe a l'aide d'un utilitaire développé en PB (Compile-pbp.pb)
Voici l'architecture disque de mes différents projets:
Y:\PB\PB2\PROJET00\projet00.pb
Y:\PB\PB2\PROJET00\projet00.pbp
...
Y:\PB\PB2\PROJET99\projet99.pb
Y:\PB\PB2\PROJET99\projet9.pbp
Y:\PB\PB2\1-Update-pbp.pb
Y:\PB\PB2\2-Compile-pbp.pb
En réalité, chaque projet a son nom propre et non PROJETXX
Voici le code du fichier 1-Update-pbp.pb
Code : Tout sélectionner
;
;************************************************************************
;Title : update-pbp.pb (For all my projects)
;Auteur : (C) 2024 CAGE
;Date : 2024/11/17
;Version PB : PureBasic 6.12 LTS (Windows - x86)
;Version PB : PureBasic 6.12 LTS (Windows - x64)
;Compiler Options
;~~~~~~~~~~~~~~~~
;Compiler Options : [x] Optimize generated code
;Compiler Options : [.] Enable inline ASM syntax coloring
;Compiler Options : [.] Create threadsafe executable
;Compiler Options : [.] Enable OnError lines support
;Compiler Options : [.] Enable DPI aware executable (Windows and macOS)
;Compiler Options : [.] Enable moderm theme support (for Windows X and above)
;Compiler Options : [.] Request Administrator mode for Windows Vista and above
;Compiler Options : [.] Request User mode for Windows Vista and above (no virtualisation)
;Compiler Options : [.] Enable DLL preloading protection (Windows)
;Compiler Options : Library Subsystem: []
;Compiler Options : Executable format: [Windows] [All CPU]
;Compiler Options : Linker options file: []
;Compile/Run
;~~~~~~~~~~~
;Compile/Run : [x] Enable Debugger
;Compile/Run : [x] Enable Purifier
;Compile/Run : [.] Use selected Debugger: [Integrated IDE Debugger]
;Compile/Run : [.] Use Warning mode: [Ignore Warning ]
;Compile/Run : Run executable with:
;Compile/Run : Executable CommandLine: []
;Compile/Run : Current directory: []
;Compile/Run : [x] Create temporary executable in the source directory
;Compile/Constants
;~~~~~~~~~~~~~~~~
;Compile/Constants: [.] #PB_Editor_CompileCount:
;Compile/Constants: [.] #PB_Editor_BuildCount:
;Compile/Constants: [x] #PB_Editor_CreateExecutable
;
;Libairies
;~~~~~~~~~
;Libairies: aucunes
;
;https://github.com/deseven/pbsamples/tree/master/crossplatform/libcurl
;************************************************************************
;
;========================================================================
OnErrorGoto(?ErrorHandler)
;========================================================================
EnableExplicit
EnableDebugger
CompilerSelect #PB_Compiler_EnableExplicit
CompilerCase #False
CompilerError "EnableExplicit must be indicated"
CompilerDefault
CompilerEndSelect
CompilerSelect #PB_Compiler_ExecutableFormat
CompilerCase #PB_Compiler_Executable
CompilerDefault
CompilerError "'Executable format:' must be Windows"
CompilerEndSelect
;{ Remarques:
;
;https://www.purebasic.com/documentation/reference/general_rules.html
;https://www.purebasic.com/french/documentation/reference/general_rules.html
;
;Ne PAS confondre les constantes #NUL, #Null et #Null$.
;
;La constante #NUL représente le caractère NUL.
;La constante #Null représente un pointeur null.
;La constante #Null$ représente une chaîne nulle,cad une chaine de caractère non initialisé.
;La constante #NUL$ n’existe pas.
;La constante #Empty$ représente une chaîne vide (exactement la même chose que "")
;La constante #CRLF$ représente un retour à la ligne sous Windows.
; C’est une chaîne composée des caractères #CR et #LF
; Ou la concaténation de #CR$ et #LF$
;}
Global AppPath$ = GetPathPart(ProgramFilename())
SetCurrentDirectory(AppPath$)
#copyright$ = "copyright © 2024 CAGE"
#purebasic$ = "PureBasic 6.12 LTS"
Global G$ = Chr(34)
Global CREATOR32$ = "PureBasic 6.12 LTS (Windows - x86)"
Global CREATOR64$ = "PureBasic 6.12 LTS (Windows - x64)"
Global COMPILER32$ = Space(6)+"<compiler version="+G$+CREATOR32$+G$+"/>"
Global COMPILER64$ = Space(6)+"<compiler version="+G$+CREATOR64$+G$+"/>"
Global VER1$ = FormatDate("%yy,%mm,0,%dd" , Date()) ; value="15,11,0,16"
Global VER2$ = FormatDate("%yy.%mm.%dd" , Date()) ; value="15.11.16"
Global YYYY$ = FormatDate("%yyyy" , Date()) ; value="202é"
Global YMD$ = FormatDate("%yyyy/%mm/%dd" , Date()) ; value="2022/09/23"
Global MINDATE$ = Str(Date(Year(Date()),Month(Date()),01,0,0,1))
Global MAXDATE$ = Str(Date(Year(Date())+1,Month(Date()),01,0,0,1))
Global foldr$, old$
Global project$ , pbpfile$, bakfile$, tmpfile$
Procedure.a fileExist(f$)
If FileSize(f$) = -1
ProcedureReturn #False
Else
ProcedureReturn #True
EndIf
EndProcedure
Procedure.a folderExist(f$)
If FileSize(f$) = -2
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure.a updateInclude(f$)
Protected readline$
Protected text$
Protected in.a = 0
Protected out.a = 1
Protected pbfile$ = f$
Protected bakfile$ = pbfile$ + ".bak"
Protected tmpfile$ = pbfile$ + ".tmp"
If Not fileExist(bakfile$)
CopyFile(pbfile$, bakfile$)
Else
;DeleteFile(bakfile$, #PB_FileSystem_Force)
EndIf
DeleteFile(tmpfile$, #PB_FileSystem_Force)
CopyFile(pbfile$, tmpfile$)
If ReadFile(in, tmpfile$)
If CreateFile(out, pbfile$,#PB_UTF8)
While Eof(in) = 0 ; loop as long the 'end of file' isn't reached
readline$ = RTrim(ReadString(in))
; ;Auteur : (C) 2023 CAGE
; ;Date : 2023/08/10
; ;Auteur : (C) 2023 CAGE
If FindString(readline$,";Auteur : (C)",1,#PB_String_NoCase)
text$ = ";Auteur : (C) "+YYYY$+ " CAGE"
Debug text$
WriteStringN(out, text$)
; ;Date : 2023/08/10
ElseIf FindString(readline$,";Date : 20",1,#PB_String_NoCase)
text$ = ";Date : "+YMD$
Debug text$
WriteStringN(out, text$)
; ;Version PB : PureBasic 6.00 LTS (Windows - x86)
; ;Version PB : PureBasic 6.00 LTS (Windows - x64)
ElseIf FindString(readline$,";Version PB : PureBasic",1,#PB_String_NoCase)
If FindString(readline$,"(Windows - x86)",1,#PB_String_NoCase)
text$ = ";Version PB : "+CREATOR32$
EndIf
If FindString(readline$,"(Windows - x64)",1,#PB_String_NoCase)
text$ = ";Version PB : "+CREATOR64$
EndIf
Debug text$
WriteStringN(out, text$)
; ;
Else
Debug readline$
WriteStringN(out, readline$)
EndIf
Wend
CloseFile(out)
Else
; ecriture impossible
EndIf
CloseFile(in)
Else
; leture impossible
EndIf
DeleteFile(tmpfile$, #PB_FileSystem_Force)
EndProcedure
Procedure.a updateVersion(f$)
Protected readline$
Protected text$
Protected in.a = 0
Protected out.a = 1
Protected pbfile$ = f$
Protected bakfile$ = pbfile$ + ".bak"
Protected tmpfile$ = pbfile$ + ".tmp"
If Not fileExist(bakfile$)
CopyFile(pbfile$, bakfile$)
Else
;DeleteFile(bakfile$, #PB_FileSystem_Force)
EndIf
DeleteFile(tmpfile$, #PB_FileSystem_Force)
CopyFile(pbfile$, tmpfile$)
If ReadFile(in, tmpfile$)
If CreateFile(out, pbfile$,#PB_UTF8)
While Eof(in) = 0 ; loop as long the 'end of file' isn't reached
readline$ = RTrim(ReadString(in))
; ;Auteur : (C) 2022 CAGE
; ;Date : 2022/09/22
If FindString(readline$,";Auteur : (C)",1,#PB_String_NoCase)
text$ = ";Auteur : (C) "+YYYY$+ " CAGE"
Debug text$
WriteStringN(out, text$)
;Date : 2022/09/22
ElseIf FindString(readline$,";Date : 20",1,#PB_String_NoCase)
text$ = ";Date : "+YMD$
Debug text$
WriteStringN(out, text$)
; ;Version PB : PureBasic 6.00 LTS (Windows - x86)
; ;Version PB : PureBasic 6.00 LTS (Windows - x64)
ElseIf FindString(readline$,";Version PB : PureBasic",1,#PB_String_NoCase)
If FindString(readline$,"(Windows - x86)",1,#PB_String_NoCase)
text$ = ";Version PB : "+CREATOR32$
EndIf
If FindString(readline$,"(Windows - x64)",1,#PB_String_NoCase)
text$ = ";Version PB : "+CREATOR64$
EndIf
Debug text$
WriteStringN(out, text$)
; #AppVer$ = "22.07.01"
ElseIf FindString(readline$,"#AppVer$ = ",1,#PB_String_NoCase)
text$ = "#AppVer$ = "+G$+VER2$+G$
Debug text$
WriteStringN(out, text$)
; #MINDATE = 1656633601 ;;; Debug Date(2022,07,01,0,0,1) ; = 1656633601
ElseIf FindString(readline$,"#MINDATE = ",#PB_String_NoCase)
text$ = "#MINDATE = "+MINDATE$+" ;;; Debug Date(2022,07,01,0,0,1) ; = 1656633601"
Debug text$
WriteStringN(out, text$)
ElseIf FindString(readline$,"#MAXDATE = ",#PB_String_NoCase)
text$ = "#MAXDATE = "+MAXDATE$+" ;;; Debug Date(2023,07,01,0,0,1) ; = 1688169601"
Debug text$
WriteStringN(out, text$)
; #copyright$ = "copyright © 2022 CAGE"
ElseIf FindString(readline$,"#copyright$ = ",#PB_String_NoCase)
text$ = "#copyright$ = "+G$+#copyright$+G$
Debug text$
WriteStringN(out, text$)
; #purebasic$ = "PureBasic 6.00 LTS"
ElseIf FindString(readline$,"#purebasic$ = ",#PB_String_NoCase)
text$ = "#purebasic$ = "+G$+#purebasic$+G$
Debug text$
WriteStringN(out, text$)
Else
Debug readline$
WriteStringN(out, readline$)
EndIf
Wend
CloseFile(out)
Else
; ecriture impossible
EndIf
CloseFile(in)
Else
; leture impossible
EndIf
DeleteFile(tmpfile$, #PB_FileSystem_Force)
EndProcedure
Procedure.a updateProject(pbp$)
Protected readline$
Protected text$
Protected in.a = 0
Protected out.a = 1
If ReadFile(in,pbp$)
If CreateFile(out, pbpfile$,#PB_UTF8)
While Eof(in) = 0 ; loop as long the 'end of file' isn't reached
readline$ = RTrim(ReadString(in))
;<project xmlns="http://www.purebasic.com/namespace" version="1.0" creator="PureBasic 6.00 LTS (Windows - x64)">
If FindString(readline$,"creator=",1,#PB_String_NoCase)
text$ = "<project xmlns="+G$+"http://www.purebasic.com/namespace"+G$+" version="+G$+"1.0"+G$+" creator="+G$+CREATOR64$+G$+">"
Debug text$
WriteStringN(out, text$)
;<compiler version="PureBasic 6.00 LTS (Windows - x86)"/>
;<compiler version="PureBasic 6.00 LTS (Windows - x64)"/>
ElseIf FindString(readline$,"compiler version=",1,#PB_String_NoCase)
If FindString(readline$,"x86",1,#PB_String_NoCase)
Debug COMPILER32$
WriteStringN(out, COMPILER32$)
Else
Debug COMPILER64$
WriteStringN(out, COMPILER64$)
EndIf
;<field0 value="15,11,0,15"/>
;<field1 value="15,11,0,15"/>
;<field4 value="15.11.15"/>
;<field5 value="15.11.15"/>
ElseIf FindString(readline$,"field0 value=",1,#PB_String_NoCase)
text$ = " <field0 value="+G$+VER1$+G$+"/>"
Debug text$
WriteStringN(out, text$)
Continue
ElseIf FindString(readline$,"field1 value=",1,#PB_String_NoCase)
text$ = " <field1 value="+G$+VER1$+G$+"/>"
Debug text$
WriteStringN(out, text$)
Continue
ElseIf FindString(readline$,"field2 value=",1,#PB_String_NoCase)
text$ = " <field2 value="+G$+"CAGE"+G$+"/>"
Debug text$
WriteStringN(out, text$)
Continue
ElseIf FindString(readline$,"field4 value=",1,#PB_String_NoCase)
text$ = " <field4 value="+G$+VER2$+G$+"/>"
Debug text$
WriteStringN(out, text$)
Continue
ElseIf FindString(readline$,"field5 value=",1,#PB_String_NoCase)
text$ = " <field5 value="+G$+VER2$+G$+"/>"
Debug text$
WriteStringN(out, text$)
Continue
ElseIf FindString(readline$,"field9 value=",1,#PB_String_NoCase)
text$ = " <field9 value="+G$+"© CAGE"+G$+"/>"
Debug text$
WriteStringN(out, text$)
Continue
ElseIf FindString(readline$,"field10 value=",1,#PB_String_NoCase)
text$ = " <field10 value="+G$+"This software is the property of the author : CAGE"+G$+"/>"
Debug text$
WriteStringN(out, text$)
Continue
Else
Debug readline$
WriteStringN(out, readline$)
EndIf
Wend
CloseFile(out)
Else
; ecriture impossible
EndIf
CloseFile(in)
Else
; leture impossible
EndIf
EndProcedure
NewList folders.s()
Define NewMap PROJET.s()
Define P=0
;Sélectionner les projets
Define AllProjects=#False ; #True or #False
Select AllProjects
Case #True
P+1:PROJET(Str(P)) = "*.*"
Case #False
; P+1:PROJET(Str(P)) = "MYADBCTRL"
P+1:PROJET(Str(P)) = "MYPLAYERIPTV"
; P+1:PROJET(Str(P)) = "MYTVCLUBTV"
; P+1:PROJET(Str(P)) = "MYWINGET"
; P+1:PROJET(Str(P)) = "MPBROWSER"
; P+1:PROJET(Str(P)) = "PORTABILISER-PB"
; P+1:PROJET(Str(P)) = "TVFREEFR"
; P+1:PROJET(Str(P)) = "VPN-INDICATEUR"
; P+1:PROJET(Str(P)) = "YHLE-FREE"
Default : End
EndSelect
ForEach PROJET()
;If ExamineDirectory(0, ".", "*.*")
If ExamineDirectory(0, ".", PROJET())
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
foldr$ = DirectoryEntryName(0)
If foldr$ <> old$
Select Left(LCase(foldr$), 12)
Case ".", "..", "icones"
Default
AddElement(folders())
folders() = foldr$
EndSelect
EndIf
old$ = foldr$
EndIf
Wend
FinishDirectory(0)
EndIf
Next
SortList(folders(), #PB_Sort_Ascending | #PB_Sort_NoCase)
;updateInclude("pb-include.pbi")
;updateVersion("pb-version.pbi")
;updateVersion("pb-console-version.pbi")
ForEach folders()
foldr$ = folders()
If ExamineDirectory(0, ".\" + foldr$, "*.pbp")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
project$ = DirectoryEntryName(0)
pbpfile$ = ".\" + foldr$ + "\" + project$
bakfile$ = pbpfile$ + ".bak"
tmpfile$ = pbpfile$ + ".tmp"
Debug pbpfile$
If Not fileExist(bakfile$)
;Debug bakfile$
CopyFile(pbpfile$, bakfile$)
Else
;DeleteFile(bakfile$, #PB_FileSystem_Force)
EndIf
DeleteFile(tmpfile$, #PB_FileSystem_Force)
CopyFile(pbpfile$, tmpfile$)
updateProject(tmpfile$)
DeleteFile(tmpfile$, #PB_FileSystem_Force)
EndIf
Wend
EndIf
Next
ErrorHandler:
End
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Un navigateur de code (Windows)
Re,
Voici le code du fichier 2-Compile-pbp.pb:
Ce code compile chaque projet .pbp en fonction du contenu de chaque fichier .pbp
Un fichier log est créé qui retrace l'ensemble de la compilation des .pbp
Les erreurs sont affichés et un bilan global des erreurs est donné a la fin de l'exécution de cet utilitaire.
cage
Voici le code du fichier 2-Compile-pbp.pb:
Code : Tout sélectionner
;
;************************************************************************
;Title : compile-pbp.pb (For all my projects)
;Auteur : (C) 2024 CAGE
;Date : 2024/11/18
;Version PB : PureBasic 6.12 LTS (Windows - x86)
;Version PB : PureBasic 6.12 LTS (Windows - x64)
;Compiler Options
;~~~~~~~~~~~~~~~~
;Compiler Options : [x] Optimize generated code
;Compiler Options : [.] Enable inline ASM syntax coloring
;Compiler Options : [.] Create threadsafe executable
;Compiler Options : [.] Enable OnError lines support
;Compiler Options : [.] Enable DPI aware executable (Windows and macOS)
;Compiler Options : [.] Enable moderm theme support (for Windows X and above)
;Compiler Options : [.] Request Administrator mode for Windows Vista and above
;Compiler Options : [.] Request User mode for Windows Vista and above (no virtualisation)
;Compiler Options : [.] Enable DLL preloading protection (Windows)
;Compiler Options : Library Subsystem: []
;Compiler Options : Executable format: [Console] [All CPU]
;Compiler Options : Linker options file: []
;Compile/Run
;~~~~~~~~~~~
;Compile/Run : [x] Enable Debugger
;Compile/Run : [x] Enable Purifier
;Compile/Run : [.] Use selected Debugger: [Integrated IDE Debugger]
;Compile/Run : [.] Use Warning mode: [Ignore Warning ]
;Compile/Run : Run executable with:
;Compile/Run : Executable CommandLine: []
;Compile/Run : Current directory: []
;Compile/Run : [x] Create temporary executable in the source directory
;Compile/Constants
;~~~~~~~~~~~~~~~~
;Compile/Constants: [.] #PB_Editor_CompileCount:
;Compile/Constants: [.] #PB_Editor_BuildCount:
;Compile/Constants: [x] #PB_Editor_CreateExecutable
;
;Libairies
;~~~~~~~~~
;Libairies: aucunes
;
;https://github.com/deseven/pbsamples/tree/master/crossplatform/libcurl
;************************************************************************
;
;========================================================================
OnErrorGoto(?ErrorHandler)
;========================================================================
EnableExplicit
EnableDebugger
CompilerSelect #PB_Compiler_EnableExplicit
CompilerCase #False
CompilerError "EnableExplicit must be indicated"
CompilerDefault
CompilerEndSelect
CompilerSelect #PB_Compiler_ExecutableFormat
CompilerCase #PB_Compiler_Console
CompilerDefault
CompilerError "'Executable format:' must be Console"
CompilerEndSelect
;{ Remarques:
;
;https://www.purebasic.com/documentation/reference/general_rules.html
;https://www.purebasic.com/french/documentation/reference/general_rules.html
;
;Ne PAS confondre les constantes #NUL, #Null et #Null$.
;
;La constante #NUL représente le caractère NUL.
;La constante #Null représente un pointeur null.
;La constante #Null$ représente une chaîne nulle,cad une chaine de caractère non initialisé.
;La constante #NUL$ n’existe pas.
;La constante #Empty$ représente une chaîne vide (exactement la même chose que "")
;La constante #CRLF$ représente un retour à la ligne sous Windows.
; C’est une chaîne composée des caractères #CR et #LF
; Ou la concaténation de #CR$ et #LF$
;}
Global AppPath$ = GetPathPart(ProgramFilename())
SetCurrentDirectory(AppPath$)
Global G$ = Chr(34)
;;; ************************************************************************
;;; ====> A MODIFIER EN FONCTION DE VOTRE CONFIGURATION
Global PUREBASIC$ = "c:\program files\purebasic\purebasic.exe"
Global CREATOR32$ = "PureBasic 6.12 LTS (Windows - x86)"
Global CREATOR64$ = "PureBasic 6.12 LTS (Windows - x64)"
Global COMPILER32$ = " <compiler version="+G$+"PureBasic 6.12 LTS (Windows - x86)"+G$+"/>"
Global COMPILER64$ = " <compiler version="+G$+"PureBasic 6.12 LTS (Windows - x64)"+G$+"/>"
Global VER0$ = FormatDate("%yyyy/%mm/%dd", Date()) ; value="2021/04/15"
Global VER1$ = FormatDate("%yy,%mm,0,%dd", Date()) ; value="15,11,0,16"
Global VER2$ = FormatDate("%yy.%mm.%dd" , Date()) ; value="15.11.16"
;;; <==== A MODIFIER EN FONCTION DE VOTRE CONFIGURATION
;;; ************************************************************************
Global folder$, old$
Global pbpfile$, pbfile$, projet$
Procedure.b fileExist(f$)
If FileSize(f$) = -1
ProcedureReturn #False
Else
ProcedureReturn #True
EndIf
EndProcedure
Procedure.b folderExist(f$)
If FileSize(f$) = -2
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
NewList folders.s()
Define NewMap PROJET.s()
Define P=0
;Sélectionner les projets
Define AllProjects=#False ; #True or #False
Select AllProjects
Case #True
P+1:PROJET(Str(P)) = "*.*"
Case #False
; P+1:PROJET(Str(P)) = "MYADBCTRL"
P+1:PROJET(Str(P)) = "MYPLAYERIPTV"
; P+1:PROJET(Str(P)) = "MYTVCLUBTV"
; P+1:PROJET(Str(P)) = "MYWINGET"
; P+1:PROJET(Str(P)) = "MPBROWSER"
; P+1:PROJET(Str(P)) = "PORTABILISER-PB"
; P+1:PROJET(Str(P)) = "TVFREEFR"
; P+1:PROJET(Str(P)) = "VPN-INDICATEUR"
; P+1:PROJET(Str(P)) = "YHLE-FREE"
Default : End
EndSelect
ForEach PROJET()
;If ExamineDirectory(0, ".", "*.*")
If ExamineDirectory(0, ".", PROJET())
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
folder$ = DirectoryEntryName(0)
If folder$ <> old$
Select Left(LCase(folder$), 12)
Case ".", "..", "icones"
Default
AddElement(folders())
folders() = folder$
EndSelect
EndIf
old$ = folder$
EndIf
Wend
FinishDirectory(0)
EndIf
Next
SortList(folders(), #PB_Sort_Ascending | #PB_Sort_NoCase)
Define PROJET=0
Define PROJETS=0
Structure champs
folder.s
pbfile.s
EndStructure
NewList projets.champs()
ForEach folders()
folder$ = folders()
If ExamineDirectory(0, ".\" + folder$, "*.pbp")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
PROJETS+1
pbfile$ = DirectoryEntryName(0)
AddElement(projets())
projets()\folder = folder$
projets()\pbfile = pbfile$
EndIf
Wend
EndIf
Next
Define sepd$="================================================="
Define sepc$="=============================================================================="
Define compiler, ExitCode, out$, outc$, outd$, log$
Define ERREURS=0
If OpenConsole()
ConsoleTitle("Compiler le projet PureBasic : ")
Define stdout = GetStdHandle_(#STD_OUTPUT_HANDLE)
Define windowSize.SMALL_RECT
With windowSize.SMALL_RECT
\left = 0
\top = 0
\right = 79
\bottom = 30
EndWith
SetConsoleWindowInfo_(stdout, #True, @windowSize)
PrintN(#Null$)
ForEach projets()
folder$ = projets()\folder
pbfile$ = projets()\pbfile
outc$=sepc$+#CRLF$
outc$+RSet(UCase(folder$),45," ")+#CRLF$
outc$+sepc$+#CRLF$
outd$=sepd$+#CR$
outd$+RSet(UCase(folder$),60," ")+#CR$
outd$+sepd$+#CR$
projet$ = GetFilePart(pbfile$)
ConsoleTitle("Compiler le projet PureBasic : "+projet$)
outc$+"Compiler le projet : "+folder$+"\"+projet$+#CR$
outd$+"Compiler le projet : "+folder$+"\"+projet$+#CR$
ConsoleColor(12,0)
PrintN(outc$) : Debug outd$ : log$+outc$
ConsoleColor(15,0)
outc$=#Null$ : outd$=#Null$
projet$=AppPath$+folder$+"\"+pbfile$ ;;; : Debug projet$
compiler = RunProgram(PUREBASIC$, "/build " + projet$, #Null$, #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide)
If compiler
PROJET+1
While ProgramRunning(compiler)
If AvailableProgramOutput(compiler)
out$ + ReadProgramString(compiler) + Chr(13)
EndIf
Wend
Exitcode = ProgramExitCode(compiler)
CloseProgram(compiler)
out$+"PROJET "+UCase(projets()\folder+"\"+projets()\pbfile)+" ("+PROJET+"/"+PROJETS+") : EXITCODE = "+Exitcode
ERREURS+Exitcode
out$=ReplaceString(out$,"(Windows - x86)","(Windows - x86)"+#CR$+#CR$,#PB_String_NoCase)
out$=ReplaceString(out$,Space(30)+"[ Ok ]","[ Ok ]",#PB_String_NoCase)
out$=ReplaceString(out$,Space(30)+"[ Error ]","[ Error ]",#PB_String_NoCase)
outc$=ReplaceString(out$,#CR$,#CRLF$)
PrintN(outc$) : Debug out$ : log$+outc$+#CRLF$
out$=""
;;; #True = 1
;;; #False = 0
;;; Exitcode = 0 la commande s'est bien terminée
;;; Exitcode = <> 0 une erreur s'est produite
EndIf
Next
outc$=sepc$+#CRLF$+#CRLF$
outd$=sepd$+#CRLF$+#CRLF$
PrintN(outc$) : Debug outd$ : log$+outc$
out$="NOMBRE TOTAL D'ERREURS POUR "+PROJETS+" PROJETS = "+ERREURS+#CRLF$+#CRLF$
PrintN(out$) : Debug out$ : log$+out$
Define filelog$=GetFilePart(ProgramFilename(),#PB_FileSystem_NoExtension)+".log"
Define out=CreateFile(#PB_Any,filelog$)
If out
WriteString(out,log$)
CloseFile(out)
EndIf
ConsoleTitle("Résultats de la compilation : "+ERREURS+" erreur(s) / "+PROJETS+" projets")
Print("Appuyez sur la touche [Q] pour (Q)uitter: ")
Define key$
Repeat
key$ = UCase(Inkey())
If key$="Q":Break:EndIf
Delay(20)
ForEver
CloseConsole()
EndIf
ErrorHandler:
End
Un fichier log est créé qui retrace l'ensemble de la compilation des .pbp
Les erreurs sont affichés et un bilan global des erreurs est donné a la fin de l'exécution de cet utilitaire.
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Un navigateur de code (Windows)
Hello Cage.
Merci pour le partage de tes codes !
Ils sont conformes à l'utilisation des projets que tu décrivais déjà dans les posts précédents et je conçois à quel point ils peuvent être pratiques pour le type de besoin que tu as. Mais je vois mal comment intégrer ce genre de routine dans PBBrowser sans l'alourdir avec un panneau de préférence dédié, car la plus grand partie des données que tu intègres avec tes fonctions sont des données personnalisées.
Je pense que tes codes sont parfaits pour répondre à tes besoins et qu'ils serviront probablement à d'autres membres du forum s'ils tombent dessus et partagent ce type de besoin.
Ce que j'avais en tête en décidant de gérer les projets avec PBBrowser répond à des besoins différents :
Lorsque le projet existe déjà, il se contente de comparer la liste de ses fichiers avec celle qu'il a dressé lui-même en examinant le code, et il demande à l'utilisateur s'il veut ajouter ou retirer des fichiers du projets, en fonction du résultat de cette comparaison.
Cette Beta 0.13 est en ligne à l'adresse qui figure dans le premier post.
Elle comporte également la correction du bug que tu avais identifié dans l'analyse des variables utilisées ou non, ainsi que la corrections des fautes de frappe ("suvies" ou lieu de "suivies" et "PPB" au lieu de "PBB") que tu m'a signalées.
Tout est fonctionnel et je n'ai pas résisté à l'envie de le mettre en ligne tout de suite. Mais il manque encore quelques petits messages indiquant à l'utilisateur ce qui vient de se produire (quand la fonction est exécutée) et - par exemple - pour lui proposer d'ouvrir le projet après sa création. J'ajouterai ça dans les versions à venir.
Encore un très grand merci pour ton aide, tes explications et ta fidélité à PBBrowser !
Merci pour le partage de tes codes !
Ils sont conformes à l'utilisation des projets que tu décrivais déjà dans les posts précédents et je conçois à quel point ils peuvent être pratiques pour le type de besoin que tu as. Mais je vois mal comment intégrer ce genre de routine dans PBBrowser sans l'alourdir avec un panneau de préférence dédié, car la plus grand partie des données que tu intègres avec tes fonctions sont des données personnalisées.
Je pense que tes codes sont parfaits pour répondre à tes besoins et qu'ils serviront probablement à d'autres membres du forum s'ils tombent dessus et partagent ce type de besoin.
Ce que j'avais en tête en décidant de gérer les projets avec PBBrowser répond à des besoins différents :
- Lorsqu'un code n'est pas intégré dans un projet et que l'on intervient sur les "Options du compilateur", tous les réglages que l'on fait sont enregistrés à la fin du fichier de code, dans une liste qui a la forme suivante :Cette liste est masquée lorsque l'on ouvre un fichier .pb avec l'IDE, mais on peut la voir si l'on ouvre le même fichier avec WordPad, par exemple.
Code : Tout sélectionner
; IDE Options = PureBasic 6.10 LTS (Windows - x86) ; CursorPosition = 7082 ; FirstLine = 4632 ; Folding = NHRT58ABF8o8- ; Optimizer ; EnableXP ; DPIAware ; UseIcon = PBBrowser resources\Images\PBBrowserLogo.ico ; Executable = PBBrowser.exe
- Lorsqu'un code est intégré dans un projet et que l'on intervient sur les "Options du compilateur", tous les réglages que l'on fait sont enregistrés dans le projet. C'est plutôt une bonne idée, car cela permet d'avoir plusieurs projets différents pour le même code, et donc d'avoir plusieurs types de réglages que l'on peut conserver indépendamment.
- Ce que je trouve extrêmement ennuyeux, c'est quand on passe d'un système à l'autre. Car, au moment de sa création, le projet ne prend pas la peine d'examiner les codes que l'on y intègre, et tous les réglages que l'on avait faits dans "Options du compilateur" sont perdus. Il faut recommencer à zéro, ce qui peut être vraiment fastidieux si l'on avait par exemple, défini des constantes et ajusté divers autres paramètres. C'est fastidieux et c'est agaçant, parce qu'il suffirait d'avoir une conversion automatique des options précédemment définies pour s'éviter ce genre de choses.
- D'autre part, il est également fastidieux (et un peu agaçant) de devoir intégrer dans le projet les fichiers qui constituent le code, alors même qu'un simple examen des mentions "Include", "XInclude" et "IncludeBinary" permet d'en dresser la liste.
Lorsque le projet existe déjà, il se contente de comparer la liste de ses fichiers avec celle qu'il a dressé lui-même en examinant le code, et il demande à l'utilisateur s'il veut ajouter ou retirer des fichiers du projets, en fonction du résultat de cette comparaison.
Cette Beta 0.13 est en ligne à l'adresse qui figure dans le premier post.
Elle comporte également la correction du bug que tu avais identifié dans l'analyse des variables utilisées ou non, ainsi que la corrections des fautes de frappe ("suvies" ou lieu de "suivies" et "PPB" au lieu de "PBB") que tu m'a signalées.
Tout est fonctionnel et je n'ai pas résisté à l'envie de le mettre en ligne tout de suite. Mais il manque encore quelques petits messages indiquant à l'utilisateur ce qui vient de se produire (quand la fonction est exécutée) et - par exemple - pour lui proposer d'ouvrir le projet après sa création. J'ajouterai ça dans les versions à venir.
Encore un très grand merci pour ton aide, tes explications et ta fidélité à PBBrowser !
Tout obstacle est un point d'appui potentiel.
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Re: Un navigateur de code (Windows)
Bonjour,
Merci pour cette nouvelle version.
Téléchargée, compilée et testée.
J'ai testé uniquement l'outil "Créer ou mettre à jour un 'projet' PureBasic"
Le fichier .pbp est bien créé et fonctionnel.
Par contre, dans le fichier .pbp que tu crée, tu indiques le nom complet des fichiers pour inputfile et outputfile
A mon avis, ce n'est pas une bonne chose car on ne peut plus déplacer les fichiers.
Il vaut mieux rester en relatif.
Contenu actuel:
Contenu souhaité:
Ceci permet de déplacer le/les dossier(s) du projet sans avoir a modifier les fichiers .pbp
Je vais continuer a tester et a te remonter ce que je pourrais éventuellement trouver.
cage
Merci pour cette nouvelle version.
Téléchargée, compilée et testée.
J'ai testé uniquement l'outil "Créer ou mettre à jour un 'projet' PureBasic"
Le fichier .pbp est bien créé et fonctionnel.
Par contre, dans le fichier .pbp que tu crée, tu indiques le nom complet des fichiers pour inputfile et outputfile
A mon avis, ce n'est pas une bonne chose car on ne peut plus déplacer les fichiers.
Il vaut mieux rester en relatif.
Contenu actuel:
Code : Tout sélectionner
<section name="targets">
<target name="Cible par défaut" enabled="1" default="1">
<inputfile value="Y:\PB\PB2\MYPLAYERIPTV\myLiveTV.pb"/>
<outputfile value="Y:\PB\PB2\MYPLAYERIPTV\myLiveTV.exe"/>
<options thread="1" xpskin="1" dpiaware="1" dllprotection="1" debug="1" optimizer="1"/>
<purifier enable="1"/>
<temporaryexe value="source"/>
<execonstant enable="1"/>
</target>
</section>
Code : Tout sélectionner
<section name="targets">
<target name="Cible par défaut" enabled="1" default="1">
<inputfile value="myLiveTV.pb"/>
<outputfile value="myLiveTV.exe"/>
<options thread="1" xpskin="1" dpiaware="1" dllprotection="1" debug="1" optimizer="1"/>
<purifier enable="1"/>
<temporaryexe value="source"/>
<execonstant enable="1"/>
</target>
</section>
Je vais continuer a tester et a te remonter ce que je pourrais éventuellement trouver.

cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Un navigateur de code (Windows)
Un autre petit soucis
La fonction Thread = CreateThread(@ProcedureName(), *Value) nécessite un paramètre *Value
Par contre, ce paramètre n'est pas obligatoirement utilisé.
Dans ma procédure loop(*a), je n'ai pas besoin de la valeur de *a
A part utiliser la valeur de a dans la procédure, il-y-a-t'il une autre possibilité ?
cage
Code : Tout sélectionner
Declare.a loop(*a)
CreateThread(@loop(), #True)
Procedure.a loop(*a)
; Variables déclarées mais non utilisées : *a ********* (PBBrowser comment)
Protected a ; ********* Added by PBBrowser.
Static isRunning.b
If isRunning
ProcedureReturn - 1
Else
isRunning = #True
EndIf
Repeat
freeWorkingMemory()
Delay(30000)
ForEver
isRunning = #False
EndProcedure
Par contre, ce paramètre n'est pas obligatoirement utilisé.
Dans ma procédure loop(*a), je n'ai pas besoin de la valeur de *a
A part utiliser la valeur de a dans la procédure, il-y-a-t'il une autre possibilité ?
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Un navigateur de code (Windows)
Bonjour Cage,
Encore merci pour ce nouveau test !
J'ai fait ça en me disant que cela permettait de déplacer le fichier du projet sans avoir à recréer la liste des fichiers (ce qui est vrai aussi).
Mais cela ne suit pas la logique initiale de l'éditeur de PureBasic lorsqu'on y crée un projet. Après réflexion (et grâce à ta remarque) j'en viens à me dire qu'il faut suivre la même logique ou cela va créer tout un tas de problème. La beta 0.14 corrige donc ce point.
La mention de PBBrowser n'est pas fausse pour autant : la variable est bien "déclarée mais non utilisée".
Est-ce vraiment un problème d'avoir ce commentaire ? N'est-ce pas plutôt une bonne chose de le voir figurer, en cas de doute lorsque tu reviendras éventuellement sur cette procédure dans quelques années ?
Ce qui est par contre anormal, c'est la mention
que ma version de PBBrowser (je viens de faire le test) n'ajoute pas à la procédure (et pour cause : la variable a n'est pas utilisée dans ta procédure).
Peut-être que cela date d'une ancienne version de PBBrowser ?
En faisant mes tests, j'ai constaté que la fonction "Vérifier les déclarations des procédures" (tout comme l'améliorateur cosmétique) ne donne évidemment aucun résultat lorsque le fichier n'a pas été préalablement enregistré par l'utilisateur. La beta 0.14 prévient désormais l'utilisateur qu'il faut d'abord enregistrer le code avant de lancer ces fonctions.
Par ailleurs, je reviens sur la fonction de création/mise à jour de projet pour ajouter d'autres remarques :
- Lorsque le projet est ouvert, dans l'IDE, PBBrowser ne parvenait pas à le modifier et il ne signalait pas cette difficulté. La beta 0.14 commence par regarder si le projet est ouvert dans l'IDE et, si c'est le cas, signale à l'utilisateur qu'il faut le fermer pour pouvoir le mettre à jour.
- Une fois le projet créé ou modifié, la beta 0.14 demande à l'utilisateur s'il veut l'ouvrir.
- Lorsque l'examen d'un projet existant est fait et qu'il ne donne lieu à aucune modification, la beta 0.14 signale à l'utilisateur que le projet était à jour et que rien n'a été modifié.
Encore merci pour ce nouveau test !
Tu as raison.cage a écrit : mar. 19/nov./2024 13:39Par contre, dans le fichier .pbp que tu crée, tu indiques le nom complet des fichiers pour inputfile et outputfile
A mon avis, ce n'est pas une bonne chose car on ne peut plus déplacer les fichiers.
J'ai fait ça en me disant que cela permettait de déplacer le fichier du projet sans avoir à recréer la liste des fichiers (ce qui est vrai aussi).
Mais cela ne suit pas la logique initiale de l'éditeur de PureBasic lorsqu'on y crée un projet. Après réflexion (et grâce à ta remarque) j'en viens à me dire qu'il faut suivre la même logique ou cela va créer tout un tas de problème. La beta 0.14 corrige donc ce point.
Je suis également tombé sur ce genre de cas lors de mes tests personnels.cage a écrit : mar. 19/nov./2024 13:39 La fonction Thread = CreateThread(@ProcedureName(), *Value) nécessite un paramètre *Value
Par contre, ce paramètre n'est pas obligatoirement utilisé.
Dans ma procédure loop(*a), je n'ai pas besoin de la valeur de *a
La mention de PBBrowser n'est pas fausse pour autant : la variable est bien "déclarée mais non utilisée".
Est-ce vraiment un problème d'avoir ce commentaire ? N'est-ce pas plutôt une bonne chose de le voir figurer, en cas de doute lorsque tu reviendras éventuellement sur cette procédure dans quelques années ?
Ce qui est par contre anormal, c'est la mention
Code : Tout sélectionner
Protected a ; ********* Added by PBBrowser.
Peut-être que cela date d'une ancienne version de PBBrowser ?
En faisant mes tests, j'ai constaté que la fonction "Vérifier les déclarations des procédures" (tout comme l'améliorateur cosmétique) ne donne évidemment aucun résultat lorsque le fichier n'a pas été préalablement enregistré par l'utilisateur. La beta 0.14 prévient désormais l'utilisateur qu'il faut d'abord enregistrer le code avant de lancer ces fonctions.
Par ailleurs, je reviens sur la fonction de création/mise à jour de projet pour ajouter d'autres remarques :
- Lorsque le projet est ouvert, dans l'IDE, PBBrowser ne parvenait pas à le modifier et il ne signalait pas cette difficulté. La beta 0.14 commence par regarder si le projet est ouvert dans l'IDE et, si c'est le cas, signale à l'utilisateur qu'il faut le fermer pour pouvoir le mettre à jour.
- Une fois le projet créé ou modifié, la beta 0.14 demande à l'utilisateur s'il veut l'ouvrir.
- Lorsque l'examen d'un projet existant est fait et qu'il ne donne lieu à aucune modification, la beta 0.14 signale à l'utilisateur que le projet était à jour et que rien n'a été modifié.
Tout obstacle est un point d'appui potentiel.
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Re: Un navigateur de code (Windows)
Je viens de publier la beta 0.14 et le commentaire ci-dessus a été édité en conséquence.
Tout obstacle est un point d'appui potentiel.
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Re: Un navigateur de code (Windows)
Méaculpa, j'avais ajouté Debug a pour voir si ça suffisait.Ce qui est par contre anormal, c'est la mention
Protected a ; ********* Added by PBBrowser.
que ma version de PBBrowser (je viens de faire le test) n'ajoute pas à la procédure (et pour cause : la variable a n'est pas utilisée dans ta procédure).
Peut-être que cela date d'une ancienne version de PBBrowser ?
C'est le pourquoi de Protected a ; ********* Added by PBBrowser.
De plus, j'ai effacé le Debug a
Je vais tester cette nouvelle version et te remonter ...
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Un navigateur de code (Windows)
Je viens de mettre en ligne la version beta 0.15 qui corrige quelques petits bugs :
- La vérification des variables locales ne marchait pas bien dans les procédures déclarées comme 'ProcedureC'
- Le path de l'exécutable n'était pas correctement ajusté dans "Création et mise à jours des projets".
Et je viens de constater un autre problème : lorsque PBBrowser dresse la liste des fichiers appartenant au projet à l'aide des 'Include', 'XInclude' ou 'IncludeBinary', il ne sait pas calculer les adresses intégrant des noms de constantes.
Par exemple :
Je vais travailler là-dessus.
- La vérification des variables locales ne marchait pas bien dans les procédures déclarées comme 'ProcedureC'
- Le path de l'exécutable n'était pas correctement ajusté dans "Création et mise à jours des projets".
Et je viens de constater un autre problème : lorsque PBBrowser dresse la liste des fichiers appartenant au projet à l'aide des 'Include', 'XInclude' ou 'IncludeBinary', il ne sait pas calculer les adresses intégrant des noms de constantes.
Par exemple :
Code : Tout sélectionner
#LocalDataDir$ = "CreateMyEBook Data\"
IncludeBinary #LocalDataDir$ + "images\open.ico"
Tout obstacle est un point d'appui potentiel.
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Re: Un navigateur de code (Windows)
La Beta 0.16 est en ligne. Elle règle le problème des noms de constantes dans les déclarations Include, XInclude et BinaryInclude.
Un bug très occasionnel dans la liste des variables utilisées ou non par une procédure a également été débusqué et réglé.
Le lien de téléchargement figure en page 1, dans le premier post de ce sujet.
Un bug très occasionnel dans la liste des variables utilisées ou non par une procédure a également été débusqué et réglé.
Le lien de téléchargement figure en page 1, dans le premier post de ce sujet.
Tout obstacle est un point d'appui potentiel.
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Re: Un navigateur de code (Windows)
Bonjour,
Merci pour cette nouvelle version.
Téléchargée, compilée et testée.
Quelques petites choses:
Quand j'obtiens la fenêtre qui m'indique que le fichier a été modifié sur le disque et que je clique "View Differences", une fenêtre s'ouvre avec les 2 fichiers cote a cote. Quand je clique sur "Go to next difference" ou "Go to previous difference", il ne se passe rien.
Si je commente une ou plusieurs voire toutes les déclarations des procédures, l'outil "Vérifier les déclarations des procédures" ne m'indique pas le soucis. Bien sur, si j'exécute l'application, j'ai tout de suite un message "Line xxx: Procedure() is not a function, array, list, map or macro."
Dans les statistiques, je n'arrive pas a trouver la variable déclarée et non utilisée. (Variable: 34 / 33.)
Il-y-a-t'il une astuce pour la trouver ?
J'ai voulu copier une partie du texte dans "Aide et Outils de PBBrowser" pour le mettre dans un fichier teste, et je n'ai pas pu.
Peut-être un bouton "Copier" a coté du bouton "Quitter" pour pouvoir copier le message d'aide.
Pour les procédures, peut-être ajouter la possibilité de les déclarer au début du code même en commentaire.
Je parle uniquement des procédures du fichier .pb du projet, pas des fichiers Include
Pense-tu qu'il serait possible de trier les procédures en les réécrivant par ordre alphabétique.
Après une recherche dans le code, une grande partie des procédures sont dépliées.
Serait-il possible d'avoir la possibilité de replier uniquement les procédures.
J'ai aussi rencontré un petit soucis cosmétique avec l'outil "Améliorateur cosmétique"
Quelques signes "+" n'étaient ni précédés ni suivis d'un espace.
Je n'ai malheureusement pas noté sur quelle partie du code.
Je vais essayer de retrouver où.
cage
Merci pour cette nouvelle version.
Téléchargée, compilée et testée.
Quelques petites choses:
Quand j'obtiens la fenêtre qui m'indique que le fichier a été modifié sur le disque et que je clique "View Differences", une fenêtre s'ouvre avec les 2 fichiers cote a cote. Quand je clique sur "Go to next difference" ou "Go to previous difference", il ne se passe rien.
Si je commente une ou plusieurs voire toutes les déclarations des procédures, l'outil "Vérifier les déclarations des procédures" ne m'indique pas le soucis. Bien sur, si j'exécute l'application, j'ai tout de suite un message "Line xxx: Procedure() is not a function, array, list, map or macro."
Dans les statistiques, je n'arrive pas a trouver la variable déclarée et non utilisée. (Variable: 34 / 33.)
Il-y-a-t'il une astuce pour la trouver ?
Code : Tout sélectionner
Temps consacré à l'exploration : 1,324 ms.
Temps dépensé en gestion de la fenêtre : 580 ms.
Durée totale de la phase d'exploration : 1,905 ms.
Longueur totale du code : 67,286 bytes / 1,806 lignes.
Nombre d'éléments trouvés / Éléments utilisés :
Procédure: 22 / 21.
Structure: 2 / 2.
Macro: 0 / 0.
Énumération: 3 / 3.
Interface: 0 / 0.
Label: 9 / 9.
Constante: 54 / 54.
Variable: 34 / 33.
Peut-être un bouton "Copier" a coté du bouton "Quitter" pour pouvoir copier le message d'aide.
Pour les procédures, peut-être ajouter la possibilité de les déclarer au début du code même en commentaire.
Je parle uniquement des procédures du fichier .pb du projet, pas des fichiers Include
Pense-tu qu'il serait possible de trier les procédures en les réécrivant par ordre alphabétique.
Après une recherche dans le code, une grande partie des procédures sont dépliées.
Serait-il possible d'avoir la possibilité de replier uniquement les procédures.
J'ai aussi rencontré un petit soucis cosmétique avec l'outil "Améliorateur cosmétique"
Quelques signes "+" n'étaient ni précédés ni suivis d'un espace.
Je n'ai malheureusement pas noté sur quelle partie du code.
Je vais essayer de retrouver où.
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Un navigateur de code (Windows)
Bonjour Cage.
Je réponds à ton festival de remarques. J'ai bien peur de ne pas t'apporter grand chose de satisfaisant cette fois, mais allons-y !
. Je l'inscris sur la 'To do list'.
Je viens justement de faire un ajustement sur cette fonction qui ne gérait pas correctement l'opérateur "With", ni les codes ascii représentés par la forme 'l' (cette façon de procéder assez peu connue permet de représenter le code ascii de la lettre "l". C'est-à-dire que Debug 'l' donne le même résultat que Debug Asc("l")). Ces ajustements figureront dans la version beta 0.17.
Si tu remets le doigt sur ton signe "+", envoie moi le code de la ligne où ça figure, et je corrigerai.
Merci encore pour tous tes tests !!
Je réponds à ton festival de remarques. J'ai bien peur de ne pas t'apporter grand chose de satisfaisant cette fois, mais allons-y !
Cette fonction de comparaison est tout à fait propre à l'IDE, et je l'ai peu utilisée. Encore une fois, cette fonction qui signale le fait qu'un fichier a été modifié n'est pas gérée par PBBrowser, mais par l'IDE lui-même (l'éditeur de PureBasic). Quand je fais un test pour voir si le comportement que tu signales se reproduit -> oui, je constate là même chose. Apparemment, les boutons suivant et précédent ne fonctionnent pas ou ne fonctionnent pas à tous les coups. Il faudrait faire un rapport de bug auprès de l'équipe PureBasic sur le forum anglais.cage a écrit : jeu. 21/nov./2024 20:27Quand j'obtiens la fenêtre qui m'indique que le fichier a été modifié sur le disque et que je clique "View Differences", une fenêtre s'ouvre avec les 2 fichiers cote a cote. Quand je clique sur "Go to next difference" ou "Go to previous difference", il ne se passe rien.
Cette remarque n'est pas tout à fait claire pour moi. Je ne suis pas sûr de comprendre ce que tu entends pas "commenter les déclarations des procédures". Ce qu'il est important de comprendre, c'est que le rôle de PBBrowser n'est pas de vérifier la syntaxe ou la cohérence du code, ce que l'IDE et le compilateur font déjà très bien. PBBrowser est conçu pour naviguer dans un code écrit et formaté selon les règles de PureBasic. Lorsqu'il tombe sur une définition de procédure, il s'attend à ce qu'elle se termine par "EndProcedure". Lorsqu'il tombe sur un appel de procédure, il s'attend à ce que cette procédure existe, etc. J'ai tenté de faire en sorte qu'il n'y ait pas de plantage quand il tombe sur des configurations de code aberrantes et il peut arriver qu'il en signale quelques unes, mais, encore une fois, ce n'est pas son rôle. Il suffit de tenter une compilation d'un code pour que l'IDE et le compilateur en signalent les faiblesses, alors je n'ai pas cherché à tout refaire de mon côté.cage a écrit : jeu. 21/nov./2024 20:27Si je commente une ou plusieurs voire toutes les déclarations des procédures, l'outil "Vérifier les déclarations des procédures" ne m'indique pas le soucis. Bien sur, si j'exécute l'application, j'ai tout de suite un message "Line xxx: Procedure() is not a function, array, list, map or macro."
Il suffit d'aller dans "Listes", puis "Variables", et de chercher celle qui est en gris au lieu d'être en noir.cage a écrit : jeu. 21/nov./2024 20:27Dans les statistiques, je n'arrive pas a trouver la variable déclarée et non utilisée. (Variable: 34 / 33.) Il-y-a-t'il une astuce pour la trouver ?
Oui, il y a la place pour ça. Ce sera dans la prochaine version.cage a écrit : jeu. 21/nov./2024 20:27J'ai voulu copier une partie du texte dans "Aide et Outils de PBBrowser" pour le mettre dans un fichier teste, et je n'ai pas pu. Peut-être un bouton "Copier" a coté du bouton "Quitter" pour pouvoir copier le message d'aide.
Je suis effectivement tombé sur plusieurs posts des forums anglais et français dans lesquels des codeurs avaient développés des petites fonctions qui recensent les procédures du code et fabriquent une liste de mentions 'Declare' à partir de là. Cela ne correspond pas du tout à mes pratiques personnelles de codage, mais si certains le font, ça n'interdit pas de leur proposer un outil pour ça. Il se trouve que ce genre de tâche rentre parfaitement dans la catégorie de ce que les outils de PBBrowser peuvent faire. C'est vraiment simple à programmer. Le plus ennuyeux, c'est de créer et gérer un panneau de choix qui demande à l'utilisateur ce qu'il veut précisément faire (avec chaque texte du panneau en version multilingue, bien sûrcage a écrit : jeu. 21/nov./2024 20:27Pour les procédures, peut-être ajouter la possibilité de les déclarer au début du code même en commentaire. Je parle uniquement des procédures du fichier .pb du projet, pas des fichiers Include

Il y a plusieurs façons d'interpréter cette question. Proposes-tu de concevoir une fonction qui renommeraient les procédures existantes en fonction d'un tri particulier ? Encore une fois, ça n'a rien de compliqué, mais c'est l'interface du bazard qui reste d'être casse-pied à mettre au point, d'autant que je ne vois pas trop à quels genres d'objectifs ça pourrait répondre et qu'il faudrait prévoir une utilisation aussi large que possible pour que cette fonction ait un sens.cage a écrit : jeu. 21/nov./2024 20:27Pense-tu qu'il serait possible de trier les procédures en les réécrivant par ordre alphabétique.
Le pliage et le dépliage sont gérés par l'IDE, et il n'offre qu'un nombre vraiment restreint de commandes en ligne pour pouvoir interagir avec lui et tenter de modifier son comportement. Il n'existe pour le moment aucun moyen d'automatiser ou de modifier sa façon de gérer les pliages. Tout ce que tu peux faire, c'est utiliser CTRL + F4 dans l'IDE.cage a écrit : jeu. 21/nov./2024 20:27Après une recherche dans le code, une grande partie des procédures sont dépliées. Serait-il possible d'avoir la possibilité de replier uniquement les procédures.
Si tu as l'occasion de re-parcourir ton code, tu vas sans doute retomber dessus à un moment où à un autre.cage a écrit : jeu. 21/nov./2024 20:27J'ai aussi rencontré un petit soucis cosmétique avec l'outil "Améliorateur cosmétique". Quelques signes "+" n'étaient ni précédés ni suivis d'un espace.
Je viens justement de faire un ajustement sur cette fonction qui ne gérait pas correctement l'opérateur "With", ni les codes ascii représentés par la forme 'l' (cette façon de procéder assez peu connue permet de représenter le code ascii de la lettre "l". C'est-à-dire que Debug 'l' donne le même résultat que Debug Asc("l")). Ces ajustements figureront dans la version beta 0.17.
Si tu remets le doigt sur ton signe "+", envoie moi le code de la ligne où ça figure, et je corrigerai.
Merci encore pour tous tes tests !!
Tout obstacle est un point d'appui potentiel.
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Re: Un navigateur de code (Windows)
Bonsoir,

Une variable .a est trouvée par PBBrowser alors que cette variable n'existe pas.
Une variable .a dans le code provoque un Line X: Syntax error.
Les procédures se trouvant en fin du code ont besoin d'êtres déclarées en début du code avant de pouvoir êtres utilisées.
Ce qui serait bien, c'est que PBBrowser nous avertisse avant d"exécuter le code.
Ça revient un peu au même que ma demande de déclarer toutes les procédures au début du code.
Je ne fais pas attention a l'ordre dans lequel je les écris et il m'arrive même de changer le nom de mes procédures en cours de route.
Au final, on obtiens un ensemble de procédures dont les noms sont dans n'importe quel ordre.
Ma demande était de trier les procédures alphabétiquement par leur nom sans rien changer dans leur code pour qu'elles se retrouvent par ordre alphabétique dans le code final.
Ce qui revient a modifier le code, mais seulement pour réécrire les procédures dans l'ordre alphabétique de leur nom. (Procédures a-->z)
Poursuite des tests en cours.
cage
En regardant bien, j'ai trouvé une incohérence dans l'onglet Variablescage a écrit : ↑jeu. 21/nov./2024 20:27
Dans les statistiques, je n'arrive pas a trouver la variable déclarée et non utilisée. (Variable: 34 / 33.) Il-y-a-t'il une astuce pour la trouver ?
Il suffit d'aller dans "Listes", puis "Variables", et de chercher celle qui est en gris au lieu d'être en noir.

Une variable .a est trouvée par PBBrowser alors que cette variable n'existe pas.
Une variable .a dans le code provoque un Line X: Syntax error.
Simplement faire un Ctrl+B sur la ligne qui commence par Declare ... ou mettre un point virgule au début de la ligne Declare ...cage a écrit : ↑jeu. 21/nov./2024 20:27
Si je commente une ou plusieurs voire toutes les déclarations des procédures, l'outil "Vérifier les déclarations des procédures" ne m'indique pas le soucis. Bien sur, si j'exécute l'application, j'ai tout de suite un message "Line xxx: Procedure() is not a function, array, list, map or macro."
Les procédures se trouvant en fin du code ont besoin d'êtres déclarées en début du code avant de pouvoir êtres utilisées.
Ce qui serait bien, c'est que PBBrowser nous avertisse avant d"exécuter le code.
Ça revient un peu au même que ma demande de déclarer toutes les procédures au début du code.
Comme tout un chacun, je crée les procédures au fur et a mesure de mes besoins pour arriver a mes fins avec mon application.cage a écrit : ↑jeu. 21/nov./2024 20:27
Pense-tu qu'il serait possible de trier les procédures en les réécrivant par ordre alphabétique.
Il y a plusieurs façons d'interpréter cette question. Proposes-tu de concevoir une fonction qui renommeraient les procédures existantes en fonction d'un tri particulier ? Encore une fois, ça n'a rien de compliqué, mais c'est l'interface du bazard qui reste d'être casse-pied à mettre au point, d'autant que je ne vois pas trop à quels genres d'objectifs ça pourrait répondre et qu'il faudrait prévoir une utilisation aussi large que possible pour que cette fonction ait un sens.
Je ne fais pas attention a l'ordre dans lequel je les écris et il m'arrive même de changer le nom de mes procédures en cours de route.
Au final, on obtiens un ensemble de procédures dont les noms sont dans n'importe quel ordre.
Ma demande était de trier les procédures alphabétiquement par leur nom sans rien changer dans leur code pour qu'elles se retrouvent par ordre alphabétique dans le code final.
Ce qui revient a modifier le code, mais seulement pour réécrire les procédures dans l'ordre alphabétique de leur nom. (Procédures a-->z)
Poursuite des tests en cours.
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Re: Un navigateur de code (Windows)
Ce logiciel me paraît très prometteur, c'est dommage que je programme beaucoup moins que dans mes belles années, mais bravo à ZapMan pour tout ce labeur.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !