![]() |
Delphi-Version: 5
unit für command line parameter
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 ![]() Hat mir jemand einen Tipp? |
AW: unit für command line parameter
Da gibt es sicher mehrere. Eines ist das von Vincent Parret:
![]() |
AW: unit für command line parameter
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:
ergibt
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.
Code:
bei einem Aufruf mit
isVerbose: 1
inputPath: "" outputPath: "C:\users\public\someFile.dat"
Code:
Für nicht allzu komplizierte Fälle reicht so etwas doch schon aus?
/isVerbose /outputpath:C:\users\public\someFile.dat
|
AW: unit für command line parameter
Liste der Anhänge anzeigen (Anzahl: 1)
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. |
AW: unit für command line parameter
|
AW: unit für command line parameter
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. :wink: |
AW: unit für command line parameter
Da ist noch einer:
![]() Siehe auch hier: ![]() |
AW: unit für command line parameter
Zitat:
![]() PS: Diese Funktion verwende ich selbst für einige meiner Kommandozeilenprogramme. Grüße Dalai |
AW: unit für command line parameter
Zitat:
|
AW: unit für command line parameter
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.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz