Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Delphi
Unita GetOpts podruhé
12. září 2001, 00.00 | Dnes se podíváme na to, jak s pomocí unity GetOpts zpracovávat dlouhé (tj. vícepísmenné) volby na příkazovém řádku.
V minulém dílu jsme se naučili zvládnout pomocí unity GetOpts tzv. krátké (čili jednopísmenné) volby. Dnes se podíváme na volby dlouhé (které jsou vícepísmenné a navíc začínají dvěma pomlčkami místo jedné). Pokud jste si minulý díl nepřečetli, raději tak učiňte teď, protože ten dnešní z něj do značné míry vychází.
Zpracování dlouhých volebKlíčem k dlouhým volbám je struktura TOption, popisující každou jednotlivou volbu. Vunitě GetOpts je deklarovaná takto:
|
Struktura je poměrně logická. Jako hodnoty položky Has_Arg můžeme uvést jednu ze tří konstant (opět deklarovaných v unitě GetOpts):
|
Položky struktury Flag a Value většinou nejsou potřeba.
Vlastní procházení voleb uskutečníme pomocí funkce GetLongOpts. Jejím prvním parametrem je řetězec popisující jednopísmenné volby. Jeho formát je úplně stejný, jako u funkce GetOpt, probírané v předchozím dílu seriálu.
Druhý parametr je ukazatel pole záznamů typu TOption. Jinými slovy seznam specifikací dlouhých voleb programu. Poslední záznam v poli musí mít nastaven položku Name na prázdný řetězec - označujeme tím, že seznam zde končí.
Poslední parametr je ukazatel na proměnnou typu LongInt. Jeho význam osvětlíme za chvilku.
Funkce GetLongOpts se chová velmi podobně jako funkce GetOpt. Prochází tedy postupně jednotlivé volby programu, a pokud jsou to krátké volby, její návratovou hodnotou je písmeno dané volby. Když projde všechny volby zadané na příkazové řádce, vrátí konstantu EndOfOptions. Pokud narazí na dlouhou volbu, vrátí hodnotu #0 a do proměnné, na kterou odkazujeme ve třetím parametru funkce, zapíše pořadí volby v seznamu. Tak můžeme dlouhou volbu jednoznačně identifikovat a dále se podle toho zařídit. Případné argumenty voleb se předávají stejně jako u GetOpt v proměnné OptArg; i hlášení chyb probíhá shodným způsobem.
PříkladJako ukázku využití unity si můžete prostudovat následující příklad. Je to variace na příklad z minulého dílu, rozšířená o možnost zpracování dlouhých voleb. Pro ty, kteří nedisponují Free Pascalem je k dispozici i zkompilovaná verze, na které si chování programu můžete vyzkoušet.
|
Co nás čeká příště?
Téma zpracovávání voleb na příkazovém řádku jsme tímto dílem seriálu vyčerpali, příště se začneme věnovat spojení Free Pascalu a XML, takže se máte na co těšit.
Obsah seriálu (více o seriálu):
- Rozšíření Free Pascalu
- Free Pascal Editor
- Ladění ve Free Pascalu poprvé
- Ladění ve Free Pascalu podruhé
- Ladění ve Free Pascalu pořetí a naposled
- Unita GetOpts poprvé
- Unita GetOpts podruhé
- Přetěžování operátorů ve Free Pascalu - 1. část
- Přetěžování operátorů ve Free Pascalu - 2. část
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007