Squelette pour Cmdline & Aide

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
ChrisR
Messages : 235
Inscription : sam. 14/févr./2015 16:20

Squelette pour Cmdline & Aide

Message par ChrisR »

Pour partir sur de "bonnes" bases pour mes futurs dev et ne pas réécrire à chaque fois.
Qu'est ce que vous me conseillez (ou utilisez), pour analyser les paramètres, switchs de ligne de commandes.
De même pour faire une aide, au plus simple.

Pour l'instant, Je suis partie sur cela (Pas top pour l'aide avec MessageRequester ici avec la police non proportionnelle et la taille de la fenêtre):

Code : Tout sélectionner

Declare.s GetCMDParam(Param.s)
Declare.c GetCMDSwitch(Switch.s)

; exemple exe avec cmdline: -path "C:\Program Files" -T Texte -switch -R -?
;                       ou: /path "C:\Program Files" /T Texte /switch /R /?
; Retours
    ; C:\Program Files
    ; Texte
    ; 1
    ; 1
    ; 0
 
Debug GetCMDParam("Path")
Debug GetCMDParam("T")
Debug GetCMDSwitch("switch")
Debug GetCMDSwitch("R")
Debug GetCMDSwitch("SwitchManquant")
Aide = GetCMDSwitch("?")

ExeName.s = GetFilePart(ProgramFilename())
help.s = "Usage:"+#CRLF$
help.s + ExeName.s + " /Path /T [/switch] [/R] [/SwitchManquant]"+#CRLF$+#CRLF$
help.s + "  /Path             Chemin d'accès"+#CRLF$
help.s + "  /T                Texte"+#CRLF$
help.s + "  /switch           switch"+#CRLF$
help.s + "  /R                R switch"+#CRLF$
help.s + "  /SwitchManquant   SwitchManquant"+#CRLF$+#CRLF$
help.s + "Exemple:"+#CRLF$ 
help.s + ExeName.s + " /path " + Chr(34) + "C:\Program Files"  + Chr(34) +" /T Texte /switch /R"+#CRLF$
If Aide= #True 
  MessageRequester(ExeName.s + " Usage", help.s , #PB_MessageRequester_Ok|#MB_ICONINFORMATION)
EndIf

;----------------------------------------------------------------------------------
; Parametre 
;----------------------------------------------------------------------------------
Procedure.s GetCMDParam(Param.s)
  Param = LCase(Param)
  For i = 0 To CountProgramParameters() -1
    If  LCase(ProgramParameter(i)) = "-" + Param Or LCase(ProgramParameter(i)) = "/" + Param
      ProcedureReturn ProgramParameter(i+1)
    EndIf   
  Next   
  ProcedureReturn ""
EndProcedure
;----------------------------------------------------------------------------------
; Switch
;----------------------------------------------------------------------------------
Procedure.c GetCMDSwitch(Switch.s)
  Switch = LCase(Switch)
  For i = 0 To CountProgramParameters() -1
    If  LCase(ProgramParameter(i)) = "-" + Switch Or LCase(ProgramParameter(i)) = "/" + Switch
      ProcedureReturn #True
    EndIf   
  Next   
  ProcedureReturn #False   
EndProcedure
Avatar de l’utilisateur
ChrisR
Messages : 235
Inscription : sam. 14/févr./2015 16:20

Re: Squelette pour Cmdline & Aide

Message par ChrisR »

J'ai trouvé un truc qui me convient bien mieux pour faire facilement une petite aide :wink:
en incluant simplement un fichier texte et l'aide saisie dans Notepad.
http://forums.purebasic.com/english/vie ... p?p=446210

Code : Tout sélectionner

IncHelp()

;----------------------------------------------------------------------------------
Procedure IncHelp()

  ExeName.s = GetFilePart(ProgramFilename())
  If OpenWindow(99,0,0,600,480,ExeName.s + " Help",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    AddKeyboardShortcut(99, #PB_Shortcut_Escape, 1)
    If LoadFont (99, "Courier new", 8)
      SetGadgetFont(#PB_Default, FontID(99))
      EditorGadget(99,5,5,590,470,#PB_Editor_ReadOnly)
    EndIf  
   
   t$ = PeekS(?HELP,-1,#PB_Ascii)
   SetGadgetText(99,t$)
   
   Repeat
      Select WaitWindowEvent()
         Case #PB_Event_CloseWindow
           quit = #True
         Case #PB_Event_Menu
            quit = #True           
      EndSelect
   Until quit = #True
   
  EndIf
EndProcedure

DataSection
   HELP:
   IncludeBinary "IncHelp.txt"
   Data.b 0
EndDataSection 
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Squelette pour Cmdline & Aide

Message par falsam »

Pour l'aide tu pourrait utiliser un webgadget et inclure une page web en datasection afin d'obtenir une meilleure mise en page.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Squelette pour Cmdline & Aide

Message par Mesa »

Pour la ligne de commande, ça me paraît bien. Il faudra penser à fabriquer un programme console dans "Compilateur\Options du compilateur...`\(onglet)Option de compilation\Format de l’exécutable" et choisir "Console".
(Astuce: Il faut éviter de compiler une console avec l'option unicode+administrateur)

En fait, avec PureBasic, on n'a pas la culture "de la ligne de commande". On ne fait presque jamais de programme console car c'est tellement facile et rapide d'ouvrir une fenêtre avec quelques gadgets dessus :D

Et pour l'aide, la bibliothèque Help permet d'afficher une aide au format .chm en 1 ligne de code.

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 220, 100, "Exemple...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ButtonGadget  (0, 10, 10, 200, 30, "Aide")
    ButtonGadget  (1, 10, 60, 200, 30, "Aide DrawingMode()")
  
  Repeat
    Event = WaitWindowEvent()
    
    Select Event
        
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 0 
            OpenHelp(#PB_Compiler_Home + "PureBasic.chm","")
            
          Case 1 
            OpenHelp(#PB_Compiler_Home + "PureBasic.chm","2ddrawing/drawingmode.html")
            
        EndSelect
        
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf



Mesa.
Avatar de l’utilisateur
ChrisR
Messages : 235
Inscription : sam. 14/févr./2015 16:20

Re: Squelette pour Cmdline & Aide

Message par ChrisR »

Je dois avoir un réglage a faire sur mon profil. Je ne reçois pas de mail pour les réponses sur les sujets que j'ouvre :!:

Actuellement, je développe principalement des petits outils en ligne de commandes et un simple fichier txt devrait suffire la plupart des cas.
Dans mon projet, beaucoup de programmes sont lancés et raccourcis créer a partir d'un fichier de config:
[shortcut]
System Tools\Registry|Remote Regedit|%SystemRoot%\System32\Runscanner.exe||/t 0 /sd /ac /m+ /y regedit.exe

[autorun]
nowait|LetterSwap|%SystemRoot%\system32\LetterSwap.exe /auto /Log %temp%\LSLog.txt
Pour une meilleur présentation, en effet, le WebGadget avec une simple page html devrait être assez sympa :)
Et pour une aide plus "Pro" avec OpenHelp et une aide au format .chm. En simple amateur, je n'ai pas encore construit d'aide.chm mais cela viendra certainement :wink:
Merci :D
Répondre