Hallo,
ich möchte eine Konsolenanwendung mit Lazarus schreiben, und dabei sollen fünf Parameter als Name/Wert-Paare übergeben werden.
Der Kommandozeilenaufruf der fertigen Anwendung könnte zum Beispiel so aussehen:
MeineAnwendung -a 123 -b 456 -c 789 -d xxx -e zzz
Dazu habe ich mir in Lazarus unter Datei->Neu->Konsolenanwendung ein Grundgerüst erstellen lassen.
Leider weiß ich jetzt nicht mehr weiter.
Was genau bewirkt die function CustApp.CheckOptions('h','help') ?
Wie gibt man dort an, dass fünf Programm-Parameter erlaubt sind?
Wie liest man die fünf Programm-Parameter im Programm?
Konsolenapplikation mit mehreren Params
-
- Beiträge: 218
- Registriert: Mo 3. Jan 2011, 13:34
- OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
- CPU-Target: 64Bit
- Wohnort: Nürnberg
Re: Konsolenapplikation mit mehreren Params
Siehe http://www.freepascal.org/docs-html/fcl ... tions.html (prüft, ob ein übergebener Parameter gültig ist, in diesem Fall sind die Paramter "-h" oder "-help" zulässig)kirchfritz hat geschrieben:Was genau bewirkt die function CustApp.CheckOptions('h','help') ?
Nein, das könntest Du aber bei dem Aufruf mit Parameter -h bei TMyApplication.WriteHelp ausgeben.kirchfritz hat geschrieben:Wie gibt man dort an, dass fünf Programm-Parameter erlaubt sind?
z.B:kirchfritz hat geschrieben:Wie liest man die fünf Programm-Parameter im Programm?
Code: Alles auswählen
// quick check parameters
ErrorMsg:=CheckOptions('a, b, c, d, e, h','');
if ErrorMsg<>'' then begin
ShowException(Exception.Create(ErrorMsg));
Terminate;
Exit;
end;
// parse parameters
if HasOption('h','help') then begin
WriteHelp;
Terminate;
Exit;
end;
{ add your program here }
Writeln(GetOptionValue('a'));
Writeln(GetOptionValue('b'));
Writeln(GetOptionValue('c'));
Writeln(GetOptionValue('d'));
Writeln(GetOptionValue('e'));
Writeln('Alternativ:');
//oder
i:=1; //0 ist eigener Pfad+Programmname
repeat
Para:=ParamStr(i);
writeln(Para);
inc(i);
until length(Para)=0;
Readln;
// stop program loop
Terminate;
Zuletzt geändert von Michl am Fr 3. Jan 2014, 16:15, insgesamt 2-mal geändert.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2816
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Konsolenapplikation mit mehreren Params
Ich habe die Vorlage "Konsolenanwendung" nie so richtig verstanden und nutze diese nicht. Neues Projekt => Programm ist meine Wahl für Konsolenanwendungen.
Für Kommandozeilenparamter existiert auch die Unit GetOpts. Dort gibt es ein ausführliches Beispiel für Parameterübergaben: http://www.freepascal.org/docs-html/rtl ... etopt.html
Für Kommandozeilenparamter existiert auch die Unit GetOpts. Dort gibt es ein ausführliches Beispiel für Parameterübergaben: http://www.freepascal.org/docs-html/rtl ... etopt.html
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56