Autor Beitrag
Metrik
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 80

Win XP, Win Vista
C# (VS 2003, #Develop)
BeitragVerfasst: 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 user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am So 05.11.2006 um 13:09
Metrik Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 80

Win XP, Win Vista
C# (VS 2003, #Develop)
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 80

Win XP, Win Vista
C# (VS 2003, #Develop)
BeitragVerfasst: Mo 06.11.06 18:34 
Okay
Ich würde das vom Prinzip her etwa so machen:

ausblenden volle Höhe C#-Quelltext
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)
        {
            //der zweite Parameter ist dann der imput der verwertet wird.
            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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 07.11.06 18:51 
user profile iconMetrik hat folgendes geschrieben:
Wie kann man das abfangen?

Du wertest nur so viele Parameter aus, wie auch vorhanden sind?
user profile iconMetrik 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 80

Win XP, Win Vista
C# (VS 2003, #Develop)
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 80

Win XP, Win Vista
C# (VS 2003, #Develop)
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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".