Autor Beitrag
Alex*
Hält's aus hier
Beiträge: 3

WIN 2000
Delphi7 Personal
BeitragVerfasst: Do 26.07.07 15:25 
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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Do 26.07.07 16:09 
x = Anzahl der Parameter, die übergeben werden
ausblenden 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* Threadstarter
Hält's aus hier
Beiträge: 3

WIN 2000
Delphi7 Personal
BeitragVerfasst: Do 26.07.07 16:14 
user profile iconJayEff 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

_________________
Bald ist die Faustball WM in Niedersachsen!!!
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 26.07.07 16:48 
user profile iconWolle92 hat folgendes geschrieben:
x = Anzahl der Parameter, die übergeben werden
ausblenden 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:

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.