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 poprvé
30. srpna 2001, 00.00 | I když světu počítačů dominují různá grafická uživatelská
rozhraní, stále nevymizela potřeba používat klasický příkazový
řádek. I ve Free Pascalu se s ním dá pohodlně pracovat.
I když světu počítačů dominují různá grafická uživatelská rozhraní, stále nevymizela potřeba používat klasický příkazový řádek a programy, které fungují v textovém režimu. Chování takových programů lze většinou ovlivnit pomocí parametrů zapsaných na příkazovém řádku za názvem spouštěného programu.
My se budeme zajímat o to, jak z programu tyto parametry efektivně zpracovávat. Ve chvíli, kdy je program trochu složitější a má několik desítek různých voleb, je poněkud nepohodlné zvládat vše pomocí klasických dvou pascalských funkcí ParamCount a ParamStr. A právě pro tyto situace je určena unita GetOpts, která je dostupná právě ve Free Pascalu.
PůvodTato unita se (jako ostatně většina věcí) nevzala ve Free Pascalu zčista jasna, ale je v podstatě přepsáním obdobné knihovny, dostupné standardně v Linuxu s překladačem jazyka C++ GCC.
Unita byla původně určena jen pro Linux, ale nyní je dostupná i pro všechny ostatní platformy podporované Free Pascalem.
Druhy parametrůObecně se programům předávají dva druhy parametrů: volby (options) a soubory (files nebo obecněji non-options).
Za volby jsou v unitě GetOpts považovány všechny parametry začínající pomlčkou (-). Volby můžou být krátké (jednopísmenné) a dlouhé (vícepísmenné), přičemž dlouhé jsou uvozeny dvěma pomlčkami (--). Obvykle má každá volba jak krátkou, tak i dlouhou variantu. Například nápovědu lze většinou vyvolat volbami -h nebo --help, přičemž obě dvě jsou ekvivalentní.
Za některými volbami je třeba doplnit argumenty, které volbu dále zpřesňují. Například vypisovaní něčeho do šířky 50 sloupců můžeme typicky zadat takto: -w 50 (nebo -w=50).
Soubory, se kterými se má pracovat, jsou obvykle předávány na úplném konci příkazového řádku (ale někdy též jako argumenty některých voleb, záleží na konkrétním případu).
Krátké volbyDnes se podíváme na tu část knihovny, která je určena pro práci s krátkými volbami. Klíčem je zde funkce GetOpt deklarovaná takto::
|
Do jejího parametru ShortOpts vepíšeme řetězec znaků, které jsou povolenými krátkými volbami našeho programu. Pokud má volba povinný argument, doplníme za její písmeno dvojtečku (:), pokud je tento argument nepovinný, doplníme dvě dvojtečky (::).
Funkci je nutné volat opakovaně, dokud nevrátí hodnotu EndOfOptions, což znamená, že už jsme prošli všechny volby. Jinak funkce vrací písmeno právě zpracovávané volby. Pokud má volba argument, jeho hodnotu najdeme v globální proměnné OptArg.
Pokud funkce vrátí znak '?' (otazník), znamená to, že programu byla předána volba, kterou nezná. Její písmeno najdeme v proměnné OptOpt. Pokud před voláním funkce nastavíme globální proměnou OptErr na hodnotu True, funkce GetOpt automaticky vypíše i chybové hlášení. Pokud hodnotu nastavíme na False, o výpis chybového hlášení se musíme postarat sami.
PříkladVysvětlování už bylo dost, podívejte se raději na příklad, ze kterého je vše pochopitelné. Ti z vás, kteří nemají Free Pascal, ti můžou stáhnout i zkompilovanou verzi.
|
Příště
V příštím dílu seriálu se podíváme na to, jak se v unitě GetOpts zpracovávají dlouhé volby.
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