Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Konsolenanwendung per DOS starten und Parameter übergeben
Alex* - Do 26.07.07 15:25
Titel: Konsolenanwendung per DOS starten und Parameter übergeben
Hallo,
ich habe meine erste kleine Konsolenanwendung erstellt. :lol:
In der Anwendung muss der Nutzer bisher nach dem Starten die benötigten Parameter (Datei + Anzahl) manuell eingeben.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| Writeln('Bitte geben Sie einen Dateinamen an:'); ReadLn(usereingabe); AssignFile(f,usereingabe);
WriteLN('Bitte geben Sie an, wie viele Dateien mit dem Inhalt erstellt werden sollen:'); ReadLn(usereingabe); {Anzahl Dateien speichern } Anzahl:=StrToInt(usereingabe); |
Nun möchte ich jedoch diese Konsolenanwendung über das DOS Fenster starten und die bei dem Aufruf angebenen Parameter automatisch übernehmen.
Könnt ihr mir einen Tipp geben, wie ich das programmieren kann :?:
Danke schon mal im Vorraus für eure Hilfe!
LG, Alex*
JayEff - Do 26.07.07 15:31
Meinst du vielleicht so:MeinProgramm.exe C:\Datei.txt 5 ?
Du bekommst von der Funktion ParamStr(); die Parameter mit denen das Programm gestartet wird, zurück. ParamStr(0) ist Pfad&Dateiname deiner Exe-Datei, ParamStr(1) ist der erste Parameter ("C:\Datei.txt"), ParamStr(2) der Zweite ("5") etc.
Wolle92 - Do 26.07.07 16:09
x = Anzahl der Parameter, die übergeben werden
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure ParameterLesen; var i: Integer prm_cnt: Integer prm: array [1..x] of String; begin for i := 1 to x do prm[i] := ParamStr(i); end; |
Alex* - Do 26.07.07 16:14
JayEff hat folgendes geschrieben: |
Meinst du vielleicht so:MeinProgramm.exe C:\Datei.txt 5 ?
Du bekommst von der Funktion ParamStr(); die Parameter mit denen das Programm gestartet wird, zurück. ParamStr(0) ist Pfad&Dateiname deiner Exe-Datei, ParamStr(1) ist der erste Parameter ("C:\Datei.txt"), ParamStr(2) der Zweite ("5") etc. |
Danke für die schnelle Hilfe!
Funktioniert einwandfrei!
LG, Alex
JayEff - Do 26.07.07 16:48
Wolle92 hat folgendes geschrieben: |
x = Anzahl der Parameter, die übergeben werden
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure ParameterLesen; var i: Integer prm_cnt: Integer prm: array [1..x] of String; begin for i := 1 to x do prm[i] := ParamStr(i); end; | |
:shock: Das is auf so vielen Ebenen falsch...
Erstens: prm ist eine lokale Variable. ( Ein Kommentar " //Hier mit prm arbeiten" hättest du ruhig anfügen können ;) )
Zweitens: Ob ich nun auf ParamStr(i) oder auf Prm[i] zugreife macht eigenltich nur den Unterschied, dass ich statt runden eckige Klammern benutzen muss :nixweiss: schätze, wenn ich auf 5 Mio Parameter mehr mals zugreifen muss, ist ein Array performanter als die Funktion, aber mal ehrlich - dazu sind Parameter nicht gedacht.
Drittens: bei der Deklaration von statischen Arrays werden konstante Grenzen erwartet, x als Variable geht dementsprechend nicht. Besser wäre ein dynamischer Array und seine Länge mit SetLength(arr, ParamCount) anzupassen.
viertens: prm_cnt wird nicht benutzt, wozu wurde die deklariert? :shock:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!