AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

unit für command line parameter

Ein Thema von freimatz · begonnen am 17. Okt 2019 · letzter Beitrag vom 18. Okt 2019
Antwort Antwort
Seite 1 von 2  1 2      
freimatz

Registriert seit: 20. Mai 2010
1.442 Beiträge
 
Delphi 11 Alexandria
 
#1

unit für command line parameter

  Alt 17. Okt 2019, 10:33
Delphi-Version: 5
Hallo,
ich bin an einem neuen commandozeilen Tool dran. Da sollen auch Parameter (Dateinamen, Option) übergeben werden können. Klar könnte ich das mit ParamStr und so selber machen. Da gibt es aber sicher eine unit die dabei helfen kann. Ich meine mich zu erinnern an etwas wo man Option registrieren konnte.
Trotz einigem Googeln fand ich nichts fertiges.
Das hier macht das, deckt aber nur einen Spezialfall ab.
Hat mir jemand einen Tipp?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#2

AW: unit für command line parameter

  Alt 17. Okt 2019, 10:49
Da gibt es sicher mehrere. Eines ist das von Vincent Parret: https://github.com/VSoftTechnologies...mandLineParser
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: unit für command line parameter

  Alt 17. Okt 2019, 10:53
Wobei - Und das ist nur mein persönlicher Geschmack - ich denke dass man so etwas schneller selbst gebaut und auf seine eigenen Bedürfnisse zugeschnitten hat als sich in eine neue Library eingearbeitet, Lizenztexte gelesen und verstanden hat und und und.

Delphi-Quellcode:
program Project9;

{$APPTYPE CONSOLE}
{$R *.res}

uses System.SysUtils;

type
   TCommandLineArgs = record
      isVerbose:   Boolean;
      inputPath:   String;
      outputPath:   String;

      function ToString(): String; inline;
   end;

function getCommandLineArgs(const commandLine: String): TCommandLineArgs;
begin
   Result.isVerbose := FindCmdLineSwitch('isVerbose');
   if not FindCmdLineSwitch('inputPath', Result.inputPath) then
      Result.inputPath := String.Empty;
   if not FindCmdLineSwitch('outputPath', Result.outputPath) then
      Result.outputPath := String.Empty;
end;

{ TCommandLineArgs }

function TCommandLineArgs.ToString(): String;
begin
   Result :=
      String.Format('isVerbose: %d', [isVerbose.ToInteger()])
      + sLineBreak + String.Format('inputPath: "%s"', [inputPath])
      + sLineBreak + String.Format('outputPath: "%s"', [outputPath]);
end;

begin
   WriteLn( getCommandLineArgs(CmdLine).ToString() );
end.
ergibt

Code:
isVerbose: 1
inputPath: ""
outputPath: "C:\users\public\someFile.dat"
bei einem Aufruf mit
Code:
/isVerbose /outputpath:C:\users\public\someFile.dat
Für nicht allzu komplizierte Fälle reicht so etwas doch schon aus?
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: unit für command line parameter

  Alt 17. Okt 2019, 12:06
Ich habe mir irgendwann mal eine Mini-Komponente dafür gebastelt.
Das ist zwar völlig unkommentiert, aber bei ca. 100 Zeilen Code, kann man sich da wohl "einarbeiten".

Das war damals nur mal so hingepfuscht, aber vielleicht hilft es ja weiter.
Angehängte Dateien
Dateityp: zip ParamChecker.zip (903 Bytes, 11x aufgerufen)
Peter
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.201 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: unit für command line parameter

  Alt 17. Okt 2019, 12:16
Ein paar Ergänzungen:

https://github.com/benibela/rcmdline
https://www.thedelphigeek.com/2014/1...e-parsing.html
https://larsfosdal.blog/category/knowledge/code/delphi/
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.442 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: unit für command line parameter

  Alt 17. Okt 2019, 12:36
Danke an alle.

@Uwe: genau die hatte ich schon mal gesehen und mich vage daran erinnert. Die werde ich wohl auch nehmen. Sauber programmiert mit unit tests. Das sieht man leider selten.

@Günther: nun ja, ich will es ja nicht nur auf meine "eigenen Bedürfnisse" sondern die der Anwender. Und wenn da einer zum Beispiel statt "-i" ein "/i" nehmen will soll er es machen können ohne dass ich da was tun muss. Lizenztexte gelesen hat ca. 20 Sekunden gedauert "Apache" gelesen, bei uns im wiki nachgeschaut ob genehmigt - gut.
Ich fürchte das Tool wo ich gerade anfange wird auch mal ein komplizierter Fall, es riecht schon nach Fass ohne Boden.
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.201 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: unit für command line parameter

  Alt 17. Okt 2019, 12:53
Da ist noch einer:
https://osdn.net/projects/dzlib-tool...LineParser.pas

Siehe auch hier:
https://en.delphipraxis.net/topic/14...r-delphi-103x/
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#8

AW: unit für command line parameter

  Alt 17. Okt 2019, 16:17
Und wenn da einer zum Beispiel statt "-i" ein "/i" nehmen will soll er es machen können ohne dass ich da was tun muss.
Das kann in Delphi standardmäßig vorhandene Delphi-Referenz durchsuchenFindCmdLineSwitch schon.

PS: Diese Funktion verwende ich selbst für einige meiner Kommandozeilenprogramme.

Grüße
Dalai
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.442 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: unit für command line parameter

  Alt 18. Okt 2019, 11:37
Und wenn da einer zum Beispiel statt "-i" ein "/i" nehmen will soll er es machen können ohne dass ich da was tun muss.
So deutlicher?
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
647 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: unit für command line parameter

  Alt 18. Okt 2019, 14:31
Lies mal die Doku zu FindCmdLineSwitch. Da hst du einen Parameter bei dem du angeben kannst was für Switch-Zeichen erlaubt sein sollen. - (Unix) / (Windows) sind Standard und wer was anderes eingibt hat das nicht verstanden. Wieso du da also noch andere Zeichen dafür verwenden willst, ist mir ein Rätsel.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz