Parameter an die Main-funktion überliefern, hilfe
-
Hi, ich bins ich sitze grad an nem "Projekt" eher einer Übung die ich auch noch posten möchte allerdings hab ich gleich ein Problem beim übergeben der Parameter:
using System; class MainParam { public static void Main(string[] args) { foreach (String arg in args) Console.WriteLine("Parameter {0}", args); } }
SO funktioniert es... allerdings ist es ein bisschen "am ziel vorbei"
. Ich möchte die eingegebenen Parameter in variablen speichern... es sollen 3 parameter sein (t* [1-6],text,filename) aber irgendwie klappt es net bzw ich kriege es nicht hin... habe vor 2-3 tagen mit c# angefangen und bin daher noch ein totaler Neuling
-
string param1 = args[0]; string param1 = args[1]; string param1 = args[2];
-
bei
using System; class MainParam { public static void Main(string[] args) { string param1 = args[0]; string param2 = args[1]; string param3 = args[2]; } }
Gibt er mir nen error aus, ich weiss das es ausnahmen gibt hatte das thema aber bisher noch nicht der Fehler lautet
System.IndexOutOfRangeException: Index was outside the bounds of the array.
Also prinzipiell verstehe ich das der index im array nicht mit dem "wirklichen" übereinstimmt aber da ich es bei der deklaration noch nicht festlegen darf... wie mache ich das?
Es tut mir leid ich bin wie bereits gesagt ein ABSOLUTER Neuling in C#
-
... Du musst dem Programm auch Parameter übergeben.
using System; class MainParam { public static void Main(string[] args) { if(args.Length < 3) { Console.WriteLine("Usage: prog.exe param1 param2 param3"); return 20; } string param1 = args[0]; string param2 = args[1]; string param3 = args[2]; } }
prog.exe 5 text filename
Das speichert in param1 "5", in param2 "text" und in param3 "filename"
Wenn Du nicht weißt wo Du für den Debugger die Parameter angibst, so gilt für Vistual Studio:
rechtsklick auf das Projekt -> Eigenschaften. Da auf den Karteireiter Debuggen und bei Befehlszeilenparameter die Parameter eingeben.
-
Damit das funktioniert muss du ihm auch mindestens 3 Parameter mitgeben.
Wieviele Parameter du ihm wirklich übergeben hast steht in dem Property Length.
Also args.Length...if(args.Length >= 3) { string param1 = args[0]; string param2 = args[1]; string param3 = args[2]; //... }
Oder besser:
if(args.Length < 3) return;
-
ahhh ok also ist es in diesem falle ähnlich nem vector , richtig ? und c++/cli gabs ja die vektoren => "offene arrays" GANZ einfach ausgedrückt
vielen dank ich denke ab hier kann ich bissl alleine weiter machen
-
http://openbook.galileocomputing.de/csharp/kap16.htm
http://openbook.galileocomputing.de/csharp/In wieweit das "Buch" zu gebrauchen ist weiß ich nicht. Für den Umstieg von C++/CLI sollte es aber auf jeden Fall zum nachschlagen reichen
-
Knuddlbaer hat das natürlich nochmal besser erklärt.
*knuddel*
-
dangerberk schrieb:
ahhh ok also ist es in diesem falle ähnlich nem vector , richtig ? und c++/cli gabs ja die vektoren => "offene arrays" GANZ einfach ausgedrückt
vielen dank ich denke ab hier kann ich bissl alleine weiter machen
Scheint mir eine Verwirrung zu sein hier:
in C# gibts arrays: System.String[] a;
in C++/CLI auch: arraySystem::String^^ b;
(das ist dasselbe.)Die sogenannten "offenen arrays" sind unter System::Collections:: Generic.
(z.B. System.Collections.Generic.List<System.String> list;)Desweiteren gibts noch die STL/CLR dinge (nur in C++/CLI), wo auch z.B. der cliext::vector<T> angesiedelt ist. Das ist eine an die Container der C++ Standard Library angelehnten Impl. von Containern für .NET.
Simon
-
ok danke für den Hinweis theta, ich habe Grundlagen von ansi c++ gelernt und c++/cli "versucht" zu lernen bzw nicht allzu weit gekommen ausser grundlagen (aber arrays z.b. net unter .net abgearbeitet) daher kanns bei mir zu verwirrung kommen
noch mal danke, ich hab aber noch ne kleine frage... wie erzeuge ich unter C# eine Text datei mit dem von mir gewünschten Text? Ich hatte das Thema noch nicht und es dauert wohl bis es in meinem Buch dran kommt aber für mein kleines übungsprojekt wäre es schön soetwas zu wissen
-
System.IO Namespace:
http://msdn.microsoft.com/en-us/library/system.io.aspxStreamWriter dürfte interessant sein:
http://msdn.microsoft.com/en-us/library/system.io.streamwriter.aspxGrüssli