Woodstock Geschrieben 22. Oktober 2001 Teilen Geschrieben 22. Oktober 2001 Warum übergibt man eigentlich Parameter an die Command Line? Was für einen Vorteil hat man da durch? Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 22. Oktober 2001 Teilen Geschrieben 22. Oktober 2001 Das ist eine alte UNIX-Geschichte, kleine Programme zu haben, die ihre Information über die Kommandozeile erhalten. Durch pipes und Ein-/ausgabeumleitung sowie Kommandosubstitution kann man verschiedene, spezielle Programme zu komplexen Scripts zusammenschreiben, statt für jede einzelne Funktionalität das Rad immer wieder neu zu erfinden. Hinzu kommt, daß der gesamte Informationsaustausch beim Aufruf stattfindet - da eine Interaktion zur Laufzeit entfällt, ist die Verwendung in scripts überhaupt erst möglich. "Echte Kommandozeilenbenutzer" bilden sich außerdem ein, schneller zum Ziel zu kommen als "Fensterklicker" . Stell dir den Unterschied vor, ob du erst einen "Datei öffnen" Dialog aufrufen und durchklicken mußt oder einfach eintippst "prg datei.xy". Du benutzt ja auch ständig ein Kommandozeilen-Prg ohne es zu merken - die ganzen Einstellungen in MSVC werden dem Programm cl.exe letztlich beim Aufruf als Kommandozeilen-Parameter mitgeteilt: welche Quelltexte, welche include-Pfade, welche Linker-Optionen, welche Symbole wie _DEBUG etwa, etc.pp. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 22. Oktober 2001 Autor Teilen Geschrieben 22. Oktober 2001 Schön, die Frage ist doch nur, warum soll ich das machen :confused: ? Kannst Du Dich da in meinen Chef hineinversetzen? Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 22. Oktober 2001 Teilen Geschrieben 22. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Woodstock: <STRONG>Schön, die Frage ist doch nur, warum soll ich das machen :confused: ?</STRONG> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Naberius Geschrieben 22. Oktober 2001 Teilen Geschrieben 22. Oktober 2001 Denk doch nur mal an die SendTo Anwendungen unter Windows. Das ist ja auch nichts anderes. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 22. Oktober 2001 Teilen Geschrieben 22. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Woodstock: <STRONG>Schön, die Frage ist doch nur, warum soll ich das machen :confused: ? </STRONG> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 23. Oktober 2001 Autor Teilen Geschrieben 23. Oktober 2001 Gut, ich habe verstanden, ich werde nicht drum rum kommen, bzw. sollte es erst agr nicht versuchen. Also los! Nur wie? Du kennst mein Programm ja jetzt in etwa, zumindest in groben Teilen. Was soll ich da wie über die Command Line laufen lassen? (Ich weiß einfach nicht wie ich das anwenden soll, bzw. wofür. Welche Daten soll ich wie über die Command Line in mein Programm einbinden?). Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 23. Oktober 2001 Teilen Geschrieben 23. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Woodstock: <STRONG>Gut, ich habe verstanden, ich werde nicht drum rum kommen, bzw. sollte es erst gar nicht versuchen. Also los! Nur wie? (...) Welche Daten soll ich wie über die Command Line in mein Programm einbinden? Bine</STRONG> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 23. Oktober 2001 Autor Teilen Geschrieben 23. Oktober 2001 Wie meinst Du das ich soll keine Eingaben mehr zur laufzeit des Programmes machen :confused: ? Wie soll ich denn sonst die Eingaben des Users auswerten? Klar, wir haben Linux Rechner, nicht nur einen. Unser Server ist einer, und ansonsten haben wir noch zwei oder sogar drei, die nur mit Linux laufen, oder mit Linux und Windows. Was findest Du an der Homapge meiner Firma so toll? Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 23. Oktober 2001 Autor Teilen Geschrieben 23. Oktober 2001 Sorry aber in dem Punkt müssen wir wirklich gaaaaanz von vorne anfangen, da habe ich gar keine Peilung... Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 23. Oktober 2001 Teilen Geschrieben 23. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Woodstock: <STRONG>Wie meinst Du das ich soll keine Eingaben mehr zur laufzeit des Programmes machen :confused: ? Wie soll ich denn sonst die Eingaben des Users auswerten? Klar, wir haben Linux Rechner, nicht nur einen. Unser Server ist einer, und ansonsten haben wir noch zwei oder sogar drei, die nur mit Linux laufen, oder mit Linux und Windows. Was findest Du an der Homapge meiner Firma so toll? Bine</STRONG> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 23. Oktober 2001 Autor Teilen Geschrieben 23. Oktober 2001 Schon, aber ich weiß deswegen immer noch nicht worauf das ganze hinausläuft. Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 23. Oktober 2001 Autor Teilen Geschrieben 23. Oktober 2001 Vorallem soll der User ja selber entscheiden können welche Dateien usw. er durchsuchen will, und vorallem auf was er sie untersuchen will. Und so geht das doch irgendwie nicht (man, ich bin dafür echt zu doof). Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Poldi Geschrieben 23. Oktober 2001 Teilen Geschrieben 23. Oktober 2001 du implementierst dir eine funktion, nennen wir sie mal "programmaufruf_pruefen", in welcher du die übergebenen parameter auswertest. das sieht dann zum beispiel so aus: Aufruf: <programm> -i <input_datei> -i <input_datei> -s <suchstring> in der funktion suchst du dann immer nach einem -i; wenn du eins findest, kopierst du den nächsten parameter in eine input variable, usw. wenn du ein -s findest, kopierst du den folgenden sting in deine suchstring variable. so kann der user dann eine liste von dateien übergeben, welche durchsucht werden sollen, sowie der suchstring, den es zu finden gilt. was du davon hast? ganz einfach, unter unix kommt es z.b. oft vor, daß programme in cron jobs eingebunden werden, also immer zu einer bestimmten zeit ausgeführt werden sollen. da das ja auch nachts sein kann, wo niemand da ist, wäre es fatal, wenn das programm auf interaktive eingaben warten würde. das hätte zur folge, daß das programm auf eine tastatur eingabe wartet und alles bis zum morgen steht, da das programm sich ja nicht beendet und alle nachfolgenden jobs im cron job nicht mehr ausgeführt werden können. so kannst du im cron job das programm mit bestimmten parametern aufrufen. wenn sich die dateinamen oder pfade ändern, muß man auch nur änderungen im aufruf vornehmen; andererseits müßtest du das im quellcode ändern, was erstens nicht nur aufwendiger, sondern auch gefährlicher sein kann, wenn da jemand drin rummatscht, der keine ahnung hat. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 23. Oktober 2001 Teilen Geschrieben 23. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Woodstock: <STRONG>(man, ich bin dafür echt zu doof). Bine</STRONG> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 23. Oktober 2001 Teilen Geschrieben 23. Oktober 2001 @poldi, die alte unix-proggerin: schöner hätt ichs nicht sagen können Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 23. Oktober 2001 Autor Teilen Geschrieben 23. Oktober 2001 Ok, bin wieder da (war ebim Arzt). Wenn ich also mit der COmmand Line arbeiten will, dann muss ich main als Parameter (int argc, char *argv[], char *envp[]) übergeben, und die nicht irgendwie durch etwas ersetzten, ja? Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 23. Oktober 2001 Autor Teilen Geschrieben 23. Oktober 2001 Und wenn das so ist, woher weiß das Programm das es diese Parameter gibt, und wie kann ich argv die einzelnen Parameter zuweisen? Oder macht er das automatisch? Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 23. Oktober 2001 Teilen Geschrieben 23. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Woodstock: <STRONG>Und wenn das so ist, woher weiß das Programm das es diese Parameter gibt, und wie kann ich argv die einzelnen Parameter zuweisen? Oder macht er das automatisch? Bine</STRONG> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 23. Oktober 2001 Autor Teilen Geschrieben 23. Oktober 2001 Ja, aber da ich das scheinbar doch noch immer nicht wirklich verstanden habe, hat es mir nicht viel geholfen. Gut, also die Parameter argc und argv werden der Funktion main so übergeben, schön. Klappt auch, habe ich ausprobiert, trotz dieses Eintrags läuft mein Programm wie vorher auch. Nur, wie zum Teufel soll ich denn jetzt die Abfrage nach den Suchbegriffen aus dem Programm auslagern, und das meintest Du doch, sollte ich tun (weil von wegen keine Eingabe während des Programmablaufes). Und was kann ich damit noch alles machen. Hast Du eventuell Texte die mir da weiter helfen können, denn in der MSDN steht zwar drin, wie ich argv usw. zu übergeben habe, und dort finde ich auch Command Line Befehle, aber mehr nicht, und in meinem Buch ist dieses Thema gar nicht erwähnt. *verzweifel* Bine PS: Ich glaube auch nicht das ich ein hauruck Programm schreiben soll, ich soll das was ich bisher gelernt habe durch Praxis vertiefen und mir alltäglicher machen, und eben wenn ich etwas nicht weiß, es versuchen zu lösen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 23. Oktober 2001 Teilen Geschrieben 23. Oktober 2001 Schrittchen für Schrittchen ist immmer gut. Versuch doch mal als erstes, ein Wort und einen Dateinamen mitzugeben. Wenn das klappt, such einen Weg, daß die Reihenfolge von Wort und Datei beliebig ist. Danach probier, ob du auch mehrere Wörter, Dateinamen, Verzeichnissemitgeben kannst etc. Mach das solange, bist du jeden Wert, den der Benutzer bisher zur Laufzeit eingibt, beim Aufruf mitgibst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 23. Oktober 2001 Teilen Geschrieben 23. Oktober 2001 Bine, Hast du den anderen thread gelesen ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Woodstock Geschrieben 23. Oktober 2001 Autor Teilen Geschrieben 23. Oktober 2001 Ja, habe ich, hab ich Dir doch schon in meinem letzten Post gesagt. Ich soll also eine Datei die ich öffnen will und ein Wort welches ich darin suchen will der Funktion main mit als Parameter geben? Wie? Bine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Poldi Geschrieben 23. Oktober 2001 Teilen Geschrieben 23. Oktober 2001 da ich denke daß du unter windows arbeitest, hier mal schritt für schritt: deine main funktion sollte so aussehen: #define MAXCHARS 1500 // global in diesem beispiel: char InputFile[MAXCHARS]; int main(int argc, char *argv[]) { ... Programmaufruf_pruefen(int argc, char *argv[]); } implementier dir eine funktion "programmaufruf prüfen", der du argc und argv übergibst: void Programmaufruf_pruefen(int argc, char *argv[]) { // Variablen: int cntPara; //Counter für for-Schleife char *paramValue2; char *paramValue1; // -------------------- // mindestens ein parameter soll übergeben werden // parameter 1 == programmname if (argc >= 3) { for (cntPara = 0; cntPara < argc; cntPara++) { if ((paramValue1 = (char*)malloc((strlen(argv[cntPara]) + 1) * sizeof(char)))==NULL) { printf("Speicher konnte nicht reserviert werden!\n"); printf("Programm bricht ab!\n"); exit(55); } paramValue1 = argv[cntPara]; // "-i" kennzeichnen die Input Dateien // wenn paramValue1 eine Input Datei indiziert, so soll der nächste // Parameter an die Input File Liste angehängt werden if (strcmp(paramValue1, "-i") == 0) { // diese Bedingung überprüft, ob es tatsächlich auch einen // nächsten Parameter gibt if ((cntPara+1) < argc) { if ((paramValue2 = (char*)malloc((strlen(argv[cntPara+1]) + 1) * sizeof(char)))==NULL) { printf("Speicher konnte nicht reserviert werden!\n"); printf("Programm bricht ab!\n"); exit(55); } paramValue2 = argv[cntPara+1]; // der name deiner input datei wird in InputFile abgelegt stringcopy(InputFile, paramValue2, MAXCHARS); printf("\nInputFile: %s", InputFile); } else { printf ("Fehler bei Angabe der Input-Datei!\n"); exit(88); } } } else { printf("\nInkorrekter Aufruf!\n"); exit(99); } // es wird für jede Input Datei und für die Output Datei geprüft, ob die Dateien // mit den benötigten Rechten geöffnet werden können. } 1.) compilier dein programm 2.) öffne eine dos box (Start->Ausführen->cmd tippen und enter drücken) 3.) wechsel in dein verzeichnis, dahin wo die exe liegt 4.) tipp folgendes ein: a) programmname leerzeichen c)-i d) leerzeichen e) dateiname der datei, die du einlesen willst. BSP: meinProgramm.exe -i c:\\meineDatei Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 23. Oktober 2001 Teilen Geschrieben 23. Oktober 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Woodstock: <STRONG>Ja, habe ich, hab ich Dir doch schon in meinem letzten Post gesagt.</STRONG> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.