Console Mode Pascal/sk

From Lazarus wiki

Deutsch (de) English (en) español (es) français (fr) magyar (hu) 日本語 (ja) русский (ru) slovenčina (sk) 中文(台灣)‎ (zh_TW)

Programovanie v Pascale pre konzolu

od User:Kirkpatc, preložil User:Moriquend

Veľa z nás písalo pascalovské programy dávno pred tým, ako sa grafické používateľské rozhrania (GUI) a integrované vývojové prostredia (IDE) stali rozšírenými. Mnoho ostatných sú začiatočníci v programovaní v Pascale a potrebujú si preskúšať základné vlastnosti a nástroje jazyka. A iní potrebujú písať konzolové (rozumej: bežiace v textovom móde) aplikácie na vykonávanie komplexných úloh správy systému.

Lazarus poskytuje ideálne prostredie pre učenie sa Pascalu a vývoj konzolových programov. Môže byť pritom využítá všetka funkcionalita IDE, vrátane editora zdrojového kódu (Source Editor) so zvýrazňovaním syntaxe, prístupu ku knižniciam, komplexným vyhľadávaním a nástrojmi na dopĺňanie kódu, a taktiež overovaním syntaxe. Pokiaľ nechcete formulár s jeho vizuálnymi komponentami, nepotrebujete ho, lebo Lazarus aj bez neho stále ostáva veľkolepým prostredím pre vývoj programov. Môžete kompilovať (prekladať) a spúšťať váš program počas vývoja, a to bez opúšťania editora.

Pre začatie vytvárania konzolového programu choďte do hlavnému menu a vyberte Project -> New Project a potom vyberte buď Program alebo Custom program. IDE tak nevygeneruje všetky extra súbory spojené s plno-grafickou aplikáciou, a ani neotvorí Object Inspector. Ale otvorí Source Editor (editor zdrojového kódu) so základnou kostrou programovej štruktúry a očakáva, že začnete písať svoj program.

Keď ste už dokončili svoj program (alebo jeho časť) môžete ho skompilovať a spustiť vybratím Run -> Run z hlavného menu alebo kliknutím na zelený trojuholník (Run) z tlačidlovej lišty. Akékoľvek hlásenie prekladača (varovania, stavové alebo chybové správy) sa zobrazia v Message Boxe (okne správ). A snáď sa tam objaví takáto správa:

'Project "Project1" successfully built.:)'.

Ale kde je náš program??!!

Môžete ho spustiť tak, že pôjdete do konzolového okna (terminálu) a napíšete meno programu. V unixe/Linuxe, ak je program v súčasnom adresári, pravdepodobne musíte napísať:

./Project1

pokiaľ by adresár nebol súčasťou štandardnej cesty (PATH). Avšak, môže sa vám zdať veľmi nepohodlné neustále preskakovať z Lazara do terminálového okna a späť. Našťastie existuje mechanizmus, ktorý umožňuje otvárať terminálové okno priamo v prostredí Lazara.

Z halvného menu vyberte Run -> Run Parameters a zaškrtnite políčko "Use launching application". Prvýkrát, ako toto urobíte a vyskúšate Compile/Run, pravdepodobne dostanete nepeknú hlášku hovoriacu:

 "xterm: Can't execvp /usr/share/lazarus//tools/runwait.sh: Permission denied".  

Ak sa to stalo, tak potrebujete zmeniť oprávnenia pre príslušný súbor, tj. /usr/share/lazarus/tools/runwait.sh a zabezpečiť, aby ste ho mohli spúšťať (napríklad použitím príkazu chmod +x názov_súboru na Unixoch, alebo na Windows použitím utility pre zmenu oprávnení); toto by ste mali urobiť ako root. Od tejto chvíle,kedykoľvek spustíte svoj program, objaví sa konzolové okno a budet ev ňom vidieť všetok váš i/o (read, write a pod.)

Po tom, čo sa váš program prestane vykonávať, na obrazovke sa objaví správa "Press enter" ("Stlačte enter"). Čiže máte možnosť vidieť všetok výstup vygenerovaný vaším programom. Keď stlačít 'enter', okno sa zavrie.

Editor Lazara môžete použiť na vyskúšanie si všetkých príkladov zo štandardných kníh o Pascale a môžete si samozrejme napísať aj vlastné.

Medzi najužitočnejšie procedúry patri tie na vykonávanie systémových príkazov, alebo na spúšťanie iných programov (ktoré mohli byť napísané v Pascale, C, Perle alebo sú to shellové skripty, či dávkové súbory)

Tu je jeden príklad::

Program TryShell;
uses classes, unix;
var S: longint;
begin
  S := shell ('/bin/ls -la *.p*'); //zobrazí všetky .pp, .pas, .php, .png atď súbory v aktuálnom adresári
  writeln ('Program skončil s návratovou hodnotou : ', S)
end.

Môžu byť vykonávané aj o niečo komplexnejšie príkazy. Napríklad, ak ste už prezerali CVS repozitáre pre FPC a Lazarus (pozrite fpc buildfaq), mohli by ste chcieť mať na svojom systéme vždy najnovšie zdrojové súbory Lazara a FPC. Dalo by sa to zabezpečiť takýmto programom:

Program LazUpdate;
uses classes, unix;
var s : longint;
begin 
  S := shell ('cd /usr/local/src/fpc/devel/fpc ; make clean');
  S := shell ('cd /usr/local/src/fpc/devel/lazarus ; make clean');
  S := shell ('cd /usr/local/src/fpc/devel ; cvs -z 3 update -Pd fpc >& ~/cvscheckout.log');
  S := shell ('cd /usr/local/src/fpc/devel ; cvs -z 3 update -Pd
  lazarus >& ~/cvslaz.log');
end.

Pamätajte, že príkaz

shell ('cd /nejaky_adresar');

nasledovaný

 shell ('urob nieco v tomto adresari');

nefunguje, pretože po každom volaní funkcie shellu sa vykonávanie programu vracia do adresára, odkiaľ program štartoval. Takže potrebujeme v každom riadku (shell príkaze) špecifikovať viacero príkazov.

Samozrejme, nemusíte zadávať každý príkaz ako samostatný riadok Pascalu. Celkom dobre môžete vytvoriť skript podobný tomuto (prevzaté z fpc buildfaq):

#!/bin/sh
cd /usr/local/src/fpc/devel
cd fpc
make clean
cd ..
cd lazarus
make clean
cd ..
cvs -z 3 update -Pd fpc >& ~/cvscheckout.log
cvs -z 3 update -Pd lazarus >& ~/cvslaz.log 

Uložte ho do súboru, napríklad updatelaz.sh, a potom tento súbor zavolajte z vnútra vášho pascalovského programu. Asi takto:

Program LazUpdate1;
uses classes, unix;
var S : longint; 
begin
  S := shell ('updatelaz.sh')
end.