Konsolenprogramm Optionen vs. Parameter

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Konsolenprogramm Optionen vs. Parameter

Beitrag von u-boot »

Ich bin gerade an der "Absicherung" meines Konsolenprogramms gegen falsche eingaben.

Mein Programm soll im Regelfall 2 Parameter (positive Integer) nutzen.
Die Hilfeoption soll auch zur Verfügung stehen (-h --help)

Meine Vorgehensweise:
ParamStr(1) und ParamStr(2) dürfen nur die Zeichen '0' bis '9' enthalten.

Gibt man eine falschen Parameter mit '-' am Anfang ein, wird das als Option gewertet und das Programm stürzt ab mit der Fehlermeldung:
(Parameter/Option war -45)

exception at 00000000:
Invalid option at position 1: "4".

Nun find ich diese Fehlermeldung nicht sooo schön und würde gerne selber etwas verständliches ausgeben lassen. Aber leider findet der Absturz statt, bevor meine Überprüfungen überhaupt anfangen.

Wie kann man also alle ausser den vorgegebenen Optionen Abfangen ?
(wie man zusätzliche Optionen erstellen kann, hatte ich mal gefunden ).
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Konsolenprogramm Optionen vs. Parameter

Beitrag von theo »

Hu?
Kann ich nicht nachvollziehen.

u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: Konsolenprogramm Optionen vs. Parameter

Beitrag von u-boot »

Oh ich habs ... Man sollte sich halt nicht auf die Vorgaben verlassen....
Folgende schon vorgegebene Zeilen sind schuldig. Ich hatte weiter unten angefangen bei { add your program here }

Code: Alles auswählen

// quick check parameters
 ErrorMsg:=CheckOptions('h','help');
  if ErrorMsg<>'' then begin
    ShowException(Exception.Create(ErrorMsg));
    Terminate;
    Exit;
  end;
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Antworten