Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Konsolenanwendung und Parameter (https://www.delphipraxis.net/114936-konsolenanwendung-und-parameter.html)

TheCry 3. Jun 2008 07:42


Konsolenanwendung und Parameter
 
Morgen zusammen,
ich bin ziemlich neu in der Materie Delphi, aber die Programmiersprache gefällt mir sehr gut.
Deswegen ist es auch mein Ziel hier mit einzusteigen und mein bescheidenes Wissen etwas zu erweitern... :-D

Bis jetzt habe ich nur PHP programmiert.. Ich denke um das Verständnis für OOP zu haben sollte das schon ein bisschen weiterhelfen.

Naja... Ich hoffe hoffe ich bekomme es hin...
Worum geht es- Ich benötige einige Plugins für Windows die Nagios (www.nagios.org) unterstützen...

Bei diesen Plugins brauche ich keine Fenster, sondern nur die Konsole...
Ich möchte dort jetzt erst einmal klein anfangen um mir das Verständnis von Delphi anzueigenen.

Und schon komme ich an einem Punkt wo ich hänge...
Ich möchte gerne ein Programm erstellen, womit ich die Anzahl von Dateien in einem Verzeichnis zählen kann.

Aber das Verzeichnis (mit Laufwerkbuchstabe) soll per Parameter an das Programm übergeben werden.
Genauso brauche ich einen Parameter für einen Warning- und einen Parameter für den Criticalwert.

Mein Wunsch wäre wenn man das Programm dann später wie folgt aufruft:
Zitat:

filecount.exe -d c:\temp -w 80 -c 100
Rückgabe soll dann später so erfolgen, dass wenn die Level nicht überschritten werden, folgendes erscheint:
Zitat:

OK - Anzahl der Dateien: {Wert}
Wenn der Warning überschritten ist:
Zitat:

WARNING - Anzahl der Dateien: {Wert}
Und wenn der Critical überschritten ist:
Zitat:

CRITICAL - Anzahl der Dateien: {Wert}
Ich habe zwar mal was gelesen wie man externe Parameter ausliesst (ParamCount), aber nicht wie es oben geschrieben gemacht wird.

Hoffe doch, dass ich es nicht zu kompliziert beschrieben habe und Ihr mir dort auf die Sprünge helfen könnt.

Gruß
Sascha

spaxxn 3. Jun 2008 07:46

Re: Konsolenanwendung und Parameter
 
In deinem Beispiel sind es sieben Parameter, die du parsen musst.

Nur schemenhaft als Bsp:

for i:=0 to ParamCount -1 do begin

...
machwas mit ParamStr(i)
...
end;

DeddyH 3. Jun 2008 07:55

Re: Konsolenanwendung und Parameter
 
Müsste doch eigentlich
Delphi-Quellcode:
for i := 1 to ParamCount do
heißen, oder? In ParamStr(0) steht immer der komplette Pfad zur Anwendung, auch wenn keine Parameter explizit übergeben wurden.

spaxxn 3. Jun 2008 07:58

Re: Konsolenanwendung und Parameter
 
Das denken an der Stelle wollte ich ihm jetzt nicht abnehmen. Das kann man auch nachlesen.

TheCry 3. Jun 2008 08:01

Re: Konsolenanwendung und Parameter
 
Erst einaml Danke für die schnellen Antworten...

Wenn ich das jetzt richtig verstehe muss ich diese Schleife durchlaufen lassen um alle Parameter zu erfassen.
Und dort muss ich dann auch prüfen ob hinter den einzelnen Parametern (-d, -w , -c) etwas angegeben wurde.

Wenn alle Parameter ordnunngsgemäß übergeben wurden, läuft die eigentliche Auswertung.

Ist das so der richtige Ansatz?

DeddyH 3. Jun 2008 08:04

Re: Konsolenanwendung und Parameter
 
Im Prinzip richtig erfasst. Bedenke aber auch, dass
Zitat:

-d c:\temp
als 2 Parameter angesehen werden (es sei denn, Du setzt Anführungszeichen drumherum).

spaxxn 3. Jun 2008 08:04

Re: Konsolenanwendung und Parameter
 
Das kann man getrost mit ja beantworten.

Luckie 3. Jun 2008 08:07

Re: Konsolenanwendung und Parameter
 
Allerdings gibt es hier im Forum eine Unit von einem Mitglied, die das Parsen der übergebenen Parameter sehr vereinfacht. Mir fällt nur leider der Name der Unit jetzt nicht ein.

TheCry 3. Jun 2008 08:12

Re: Konsolenanwendung und Parameter
 
Zitat:

Zitat von DeddyH
Im Prinzip richtig erfasst. Bedenke aber auch, dass
Zitat:

-d c:\temp
als 2 Parameter angesehen werden (es sei denn, Du setzt Anführungszeichen drumherum).

Oh... Danke für den Hinweis... Da hätte ich bestimmt nachher wieder dran rumgefummelt, bis ich das Problem gefunden hätte.

@Luckie
Auch Danke- Werde mal etwas stöbern gehen :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 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