Sign in Join
Wiki copytemporary

Console Mode Pascal/sk: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## Programovanie v Pascale pre konzolu
22
33od User:Kirkpatc, preložil User:Moriquend
44
55Veľ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.
66
77Lazarus 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.
88
99Pre 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.
1010
1111Keď 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:
1212
1313'Project "Project1" successfully built.:)'.
1414
1515Ale kde je náš program??!!
1616
1717Môž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ť:
1818
19-`./Project1`
19+```text
20+./Project1
21+```
2022
2123pokiaľ 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.
2224
2325Z 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:
2426
25-` "xterm: Can't execvp /usr/share/lazarus//tools/runwait.sh: Permission denied".  `
27+```text
28+ "xterm: Can't execvp /usr/share/lazarus//tools/runwait.sh: Permission denied".
29+```
2630
2731Ak 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.)
2832
2933Po 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.
3034
3135Editor 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é.
3236
3337Medzi 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)
3438
3539Tu je jeden príklad::
3640
3741 Program TryShell;
3842 uses classes, unix;
3943 var S: longint;
4044 begin
4145 S := shell ('/bin/ls -la *.p*'); //zobrazí všetky .pp, .pas, .php, .png atď súbory v aktuálnom adresári
4246 writeln ('Program skončil s návratovou hodnotou : ', S)
4347 end.
4448
4549Môž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](http://www.stack.nl/~marcov/buildfaq.pdf)), 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:
4650
4751 Program LazUpdate;
4852 uses classes, unix;
4953 var s : longint;
5054 begin
5155 S := shell ('cd /usr/local/src/fpc/devel/fpc ; make clean');
5256 S := shell ('cd /usr/local/src/fpc/devel/lazarus ; make clean');
5357 S := shell ('cd /usr/local/src/fpc/devel ; cvs -z 3 update -Pd fpc >& ~/cvscheckout.log');
5458 S := shell ('cd /usr/local/src/fpc/devel ; cvs -z 3 update -Pd
5559 lazarus >& ~/cvslaz.log');
5660 end.
5761
5862Pamätajte, že príkaz
5963
60-`shell ('cd /nejaky_adresar');`
64+```text
65+shell ('cd /nejaky_adresar');
66+```
6167
6268nasledovaný
6369
64-` shell ('urob nieco v tomto adresari');`
70+```text
71+ shell ('urob nieco v tomto adresari');
72+```
6573
6674nefunguje, 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.
6775
6876Samozrejme, nemusíte zadávať každý príkaz ako samostatný riadok Pascalu. Celkom dobre môžete vytvoriť skript podobný tomuto (prevzaté z [fpc buildfaq](http://www.stack.nl/~marcov/buildfaq.pdf)):
6977
7078 #!/bin/sh
7179 cd /usr/local/src/fpc/devel
7280 cd fpc
7381 make clean
7482 cd ..
7583 cd lazarus
7684 make clean
7785 cd ..
7886 cvs -z 3 update -Pd fpc >& ~/cvscheckout.log
7987 cvs -z 3 update -Pd lazarus >& ~/cvslaz.log
8088
8189Ulož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:
8290
8391 Program LazUpdate1;
8492 uses classes, unix;
8593 var S : longint;
8694 begin
8795 S := shell ('updatelaz.sh')
8896 end.
8997
9098---
9199*From the Free Pascal wiki, page "Console Mode Pascal/sk", as it stood on 2006-07-08 after a change by Swen, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history