Autor |
Beitrag |
Metrik
Beiträge: 80
Win XP, Win Vista
C# (VS 2003, #Develop)
|
Verfasst: So 05.11.06 14:08
Hallo
Ich will eine kleine Console schreiben, damit die mir arbeite abnehmen kann.
Das Programm sollte einige verschiedene Funktionen haben, die sich über Parameter einstellen lassen.
Beispiel:
Test.exe /r blabla /d bla /l huhu
die reihenfolge der Parameter muss egal sein, es darf keiner 2 mal vorkommen und es müssen nicht alle angegeben werden.
Wie kann ich das sinnvoll lösen, ohne 1000 mal abfragen zu müssen?
Codebeispiele willkommen
Metrik Moderiert von Christian S.: Topic aus C# - Die Sprache verschoben am So 05.11.2006 um 13:09
|
|
Metrik
Beiträge: 80
Win XP, Win Vista
C# (VS 2003, #Develop)
|
Verfasst: Mo 06.11.06 16:20
Das muss doch einer wissen oder?
Oder zumindest eine Idee haben, wie man das lösen könnte?
Metrik
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 06.11.06 16:52
Vielleicht solltest Du einfach mal sagen, wie Dein bisheriger Ansatz aussieht und wo Du nicht weiter kommst.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Metrik
Beiträge: 80
Win XP, Win Vista
C# (VS 2003, #Develop)
|
Verfasst: Mo 06.11.06 18:34
Okay
Ich würde das vom Prinzip her etwa so machen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| static void Main(string[] args) { switch (args[0].ToLower()) { case "/d": Console.WriteLine("das ist ein test mit /d"); break; case "/p": Console.WriteLine("das ist ein test mit /p"); break; case "/l": Console.WriteLine("das ist ein test mit /l"); break; default: Console.WriteLine("Error: Parameter ungültig"); break; }
switch (args[2].ToLower()) { case "/d": Console.WriteLine("das ist ein test mit /d"); break; case "/p": Console.WriteLine("das ist ein test mit /p"); break; case "/l": Console.WriteLine("das ist ein test mit /l"); break; default: Console.WriteLine("Error: Parameter ungültig"); break; } switch (args[4].ToLower()) { case "/d": Console.WriteLine("das ist ein test mit /d"); break; case "/p": Console.WriteLine("das ist ein test mit /p"); break; case "/l": Console.WriteLine("das ist ein test mit /l"); break; default: Console.WriteLine("Error: Parameter ungültig"); break; } |
So ist die Reihenfolde mal eagl(noch sehr optimierbar )
Falls aber nich alle Parameter gefüllt werden = error
Wie kann man das abfangen?
Zusätzlich bruache ich eine Möglichkeit, um herauszufinen, wie viele Paramter definiert wurden.
Metrik
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 06.11.06 19:12
Hm. Ich würde den "Environment.CommandLine"-String über einen regulären Ausdruck untersuchen. Also alle Strings der Form "(/d|/p|/l)([^ ]+)" (evtl. noch irgendwelche Escapezeichen, bin gerade nicht sicher) finden und dann alle durchgehen.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Kha
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Di 07.11.06 18:51
Metrik hat folgendes geschrieben: | Wie kann man das abfangen? |
Du wertest nur so viele Parameter aus, wie auch vorhanden sind?
Metrik hat folgendes geschrieben: | Zusätzlich bruache ich eine Möglichkeit, um herauszufinen, wie viele Paramter definiert wurden. |
args.Length ?
Wenn du dir ein wenig Arbeit ersparen möchtest, kannst du auch bei The Codeproject nach Command-Line-Parameter-Parsern suchen.
|
|
Metrik
Beiträge: 80
Win XP, Win Vista
C# (VS 2003, #Develop)
|
Verfasst: Sa 11.11.06 09:47
Hallo
Kannst du mir mal konkret sagen wie das gehen soll ?
Zitat: |
Also alle Strings der Form "(/d|/p|/l)([^ ]+)" (evtl. noch irgendwelche Escapezeichen, bin gerade nicht sicher) finden und dann alle durchgehen. |
Danke
Metrik
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 11.11.06 12:39
Hallo!
Wie hast Du es denn probiert? Was weißt Du über reguläre Ausdrücke?
Grüße
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Metrik
Beiträge: 80
Win XP, Win Vista
C# (VS 2003, #Develop)
|
Verfasst: Sa 11.11.06 14:44
Hallo
Nichts
Da ich erst beginne diese Sprache zu lernen und noch nicht so weit bei.
Also ich müsste ihrgend ne quelle oder stichwort nach dem ich suchen kann, um infos darüber zu bekommen.
Metrik
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 11.11.06 15:47
Hallo!
Schau Dir mal die Doku zur RegEx-Klasse an. Wenn man sich da ein wenig durchklickt, bekommt man auch Beispiele zu regulären Ausdrücken. Sehr gut, um was über reg. A. zu lernen, finde ich auch diese Seite: tut.php-q.net/regex.html
Grüße
Christian
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|