Aktuelle Zeit: 24.09.2020 17:44

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: Modul "ProgramParameterParser"
BeitragVerfasst: 22.05.2016 12:07 
Offline
Benutzeravatar

Registriert: 11.08.2005 19:08
Code:
; Version: 1.0.1
; Werte bei kombinierten Parametern können nun nur gesetzt werden, wenn dies ausdrücklich erlaubt wird (AllowMultiSetValue=#True).
; Bei [-mt "Test"] und AllowMultiSetValue=#False wird nur dem Parameter "m" der Wert zugewiesen.

DeclareModule ProgramParameterParser
  Declare.i IsSet(LongName$, ShortName$="")
  Declare.s GetValue(LongName$, ShortName$="", DefaultValue$="", AllowMultiSetValue=#False)
EndDeclareModule

Module ProgramParameterParser
 
  Procedure.i IsSet(LongName$, ShortName$="")
    Protected i, x, Parameter$, Length
   
    For i = CountProgramParameters() - 1 To 0 Step -1
      Parameter$ = ProgramParameter(i)
     
      ; Prüfe nach langem Parameter
      If Left(Parameter$, 2) = "--"
       
        If Mid(Parameter$, 3, Len(LongName$)) = LongName$
          ProcedureReturn #True
        EndIf
         
      ; Prüfe nach kurzem Parameter
      ElseIf Left(Parameter$, 1) = "-" And ShortName$ <> ""
       
        Length = Len(Parameter$)
        For x = 2 To Length
          If Mid(Parameter$, x, 1) = ShortName$
            ProcedureReturn #True
          EndIf
        Next
       
      EndIf
    Next
   
    ProcedureReturn #False
  EndProcedure
 
  Procedure.s GetValue(LongName$, ShortName$="", DefaultValue$="", AllowMultiSetValue=#False)
    Protected i, x, Parameter$, Length
   
    For i = CountProgramParameters() - 1 To 0 Step -1
      Parameter$ = ProgramParameter(i)
     
      ; Prüfe nach langem Parameter
      If Left(Parameter$, 2) = "--"
       
        If Mid(Parameter$, 3, Len(LongName$)) = LongName$
          Parameter$ = ProgramParameter(i + 1)
          Break
        EndIf
         
      ; Prüfe nach kurzem Parameter
      ElseIf Left(Parameter$, 1) = "-" And ShortName$ <> ""
       
        Length = Len(Parameter$)
        For x = 2 To Length
          If Mid(Parameter$, x, 1) = ShortName$
            If x > 2 And Not AllowMultiSetValue
              Break
            EndIf
            Parameter$ = ProgramParameter(i + 1)
            Break 2
          EndIf
        Next
       
      EndIf
    Next
   
    If Left(Parameter$, 1) = "-" Or Left(Parameter$, 2) = "--"
      Parameter$ = ""
    EndIf
   
    If Parameter$ = ""
      Parameter$ = DefaultValue$
    EndIf
   
    ProcedureReturn Parameter$
  EndProcedure
 
EndModule

CompilerIf #PB_Compiler_IsMainFile

  ; ===============
  ; >> Beispiele <<
  ; ===============
 
  ; Programm.exe --version "1.0" --open "D:\InputFile" --save "D:\OutputFile" -oc
  ; Programm.exe --optimize --compress --version "1.0" --open "D:\InputFile" --save "D:\OutputFile"
  ; Programm.exe -o -c -v "1.0" --open "D:\InputFile" --save "D:\OutputFile"
 
  ; Parameter überschreiben:
 
  ; Programm.exe --open "D:\InputFile" --open "X:\Test\InputFile"
 
  ; Parameter kombinieren und allen einen Wert gleichzeitig übergeben:
 
  ; Programm.exe -mt "Test"
 
  Debug ProgramParameterParser::GetValue("version", "v", "UnkownVersion")
  Debug ProgramParameterParser::GetValue("open", "")
  Debug ProgramParameterParser::GetValue("save", "")
  Debug ProgramParameterParser::GetValue("message", "m")
  Debug ProgramParameterParser::GetValue("", "t", "", 0)
  If ProgramParameterParser::IsSet("optimize", "o")
    Debug "Optimierung ist aktiviert"
  EndIf
  If ProgramParameterParser::IsSet("compress", "c")
    Debug "Komprimierung ist aktiviert"
  EndIf
 
CompilerEndIf

_________________
Bild
Warum OpenSource eine Lizenz haben sollte
PureBasic-CodeArchiv-Rebirth: Git-Repository / Download – Jede Hilfe ist willkommen!
Manjaro Xfce x64 (Hauptsystem) :: WindowsXP/Xubuntu x86 (VirtualBox) :: PureBasic (Linux: x86/x64, Windows: x86) :: jeweils neueste Version


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye