Console Mode Pascal/hu

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de) English (en) español (es) suomi (fi) magyar (hu) 日本語 (ja) русский (ru) slovenčina (sk)


Szöveges módú Pascal



Szöveges módú Pascal programozás

Sokan közülünk már jóval a grafikus felhasználói felületek (GUI-k) és integrált fejlesztőkörnyezetek (IDE-k) megjelenése előtt Pascal programokat írtak. Sokan mások pedig kezdők a Pascal programozás területén, és szeretnék kipróbálni a nyelv egyszerű eszközeit. Megint másoknak konzolos vagy szöveges módú alkalmazásokat kell fejleszteniük, hogy komplex rendszer vezérlő feladatokat hajtsanak végre.

A Lazarus ideális környezetet kínál a Pascal elsajátításához, és a szöveges módú programok fejlesztéséhez. Az IDE összes lehetősége kihasználható, beleértve a Forráskód szerkesztőt a szintaxis kiemeléssel, a függvénytárakhoz való hozzáférést, bővített keresést, kódkiegészítést, és szintaxis ellenőrzést. Ha nem szeretnél form-okat vizuális komponensekkel, a Lazarus forráskód szerkesztője akkor is remek segédeszköz lesz a fejlesztéshez. Lefordíthatod és futtathatod a programodat a fejlesztés alatt, a szerkesztő elhagyása nélkül.

Konzolos projekt készítéséhez kattints a fő menüsorban a Projekt -> Új projekt ... menüpontra és válaszd a Program, Konzolos alkalmazás, vagy az Egyedi program valamelyikét. Az IDE nem fogja létrehozni a grafikus felülethez szükséges extra fájlokat, és nem fog megnyílni az Objektum Felügyelő ablaka sem, csak a Forráskód szerkesztő egy alap szerkezetű programmal, várva, hogy fejlessz.

Egyedi program

Ez egy nagyon minimális Pascal program. Válaszd ezt, ha mindent magad akarsz megoldani, vagy csak egyszerű teszt programot szeretnél készíteni, amit utána úgyis törölnél.

Program

Nagyjából ugyanaz, mint az Egyedi program, de az IDE itt már egy kicsit többet segít. Például amikor egy új unit-ot hozol létre a projektben, akkor az új unit nevét automatikusan hozzáadja a program uses szekciójához. Ez a viselkedés a projekt opciókban van definiálva.

Egy példa abszolút kezdők részére:

program Project1;
{$mode objfpc}{$H+}
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this };
begin
  WriteLn('Hello World!');
  ReadLn;
end.

Konzolos alkalmazás

Ez egy olyan programot fog létrehozni, aminek az osztálya a TCustomApplication-ből van származtatva. A TCustomApplication sok olyan általános dolgot tartalmaz, ami a parancssori alkalmazások készítését egyszerűvé teszi. Ilyenek például a parancssori paraméterek ellenőrzése, súgó írása, környezeti változók figyelése, és a kivétel kezelés. Minden LCL program ezt használja automatikusan.

Program futtatása

Fordítás

Amikor kész a programod (vagy program részleted) lefordíthatod, és futtathatod a Futtatás -> Építés (vagy Gyors fordítás) menüpontra kattintva a főmenüből, vagy a zöld "Play" gombra kattintva a gombsorban a főmenü alatt. Minden fordítói üzenet (figyelmeztetések, folyamat információk, hibaüzenetek, stb.) az Üzenetek ablakban fog megjelenni, és ha remélhetőleg a legvégén ez az üzenet is:

 A(z) "Project1" projekt sikeresen lefordítva. :)

De hol van a program?!

Ha még nem mentetted el a programot, akkor az IDE az ideiglenes könyvtárba fogja rakni (pl. /tmpunder Linux alatt, C:\temp Windows alatt, lásd a Környezet -> Beállítások ... ablak Környezet / Fájlok lapon a Könyvtár a teszt projektek építéséhez beviteli mezőt).

Ha már elmentetted a projektedet, akkor a program ugyanabban a könyvtárban jön létre, ahol a project1.lpi fájl található (megjegyzés: ez az alapeset, de ez is beállítható a Projekt -> Projekt opciók ... ablak Alkalmazás lapon található Cél fájlnév: beviteli mezőben).

Futtatás konzolban

Futtathatod a programot úgy, hogy megnyitsz egy konzol (terminál) ablakot, utána a cd paranccsal belépsz a megfelelő könyvtárba, és beírod a program nevét:

Linux alatt:

 ./Project1

Windows alatt:

 Project1.exe

Viszont elég kényelmetlen mindig kilépni a Lazarus Forráskód szerkesztőből egy terminál elindítása miatt. Szerencsére van egy megoldás, amivel ez is kiküszöbölhető, és a terminál ablak automatikusan megnyittatható az IDE-vel, a programod futtatásához.

Futattás az IDE-ben

A főmenüben a Futtatás -> Futtatási paraméterek ... menüpontra kattintva, a Futtató alkalmazás használata jelölőnégyzetet be kell pipálni. Az első alkalommal, amikor ezt csinálod, és megpróbálod futtatni az alkalmazást, valószínűleg egy ilyen üzenetet fogsz kapni:

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

Ha ez történne, meg kell változtatnod a jogosultságokat a megfelelő fájlhoz (pl. a chmod +x paranccsal, vagy a Windows alatt a megfelelő segédeszköz használatával), persze root-ként. Ezután, minden alkalommal, amikor futtatod a programodat, egy konzol ablakban fog lefutni a programod automatikusan.

Amint a programod lefutott, egy "Press enter" üzenet fog megjelenni a konzol ablakban. Ez azért jó, mert így még láthatod a programod által létrehozott kimenetet; ahogy Enter-t nyomsz, a konzol ablak bezárul.

Példák

Használhatod a Lazarus forráskód szerkesztőt, hogy kipróbáld a Pascal könyvekben található példákat, vagy sajátot is írhatsz. A leghasznosabb függvények azok, amelyekkel rendszerparancsokat, vagy más programokat futtathatsz.

Parancssori parancsok futtatása

Itt egy példa egy Egyedi programra, vagy Programra:

program TryShell;
uses 
  Classes, Unix;
var 
  S: LongInt;
begin
  S := fpsystem('/bin/ls -la *.p*'); // kilistázza a .pp, .pas, .php, .png stb. fájlokat az aktuális
                                     // könyvtárban
  WriteLn('A program futasa ezzel a statusszal ert veget: ', S)
end.

Példa: az FPC és a Lazarus frissítése

Sokkal összetettebb parancsok is végrehajthatók. Például, ha ellenőrizted az FPC és Lazarus SVN forrásokat (lásd buildfaq), naprakészen tarthatod az FPC és Lazarus forrás fájlokat az SVN forrásból való letöltéssel, a következő parancsokkal:

program LazUpdate;
uses
  Classes, Unix;
var 
  S: LongInt;
begin 
  S := fpsystem('cd /usr/local/src/fpc/devel/fpc ; make clean');
  S := fpsystem('cd /usr/local/src/fpc/devel/lazarus ; make clean');
  S := fpsystem('cd /usr/local/src/fpc/devel ; svn update fpc >& ~/cvscheckout.log');
  S := fpsystem('cd /usr/local/src/fpc/devel ; svn update lazarus >& ~/cvslaz.log');
end.

Vedd figyelembe, hogy az

fpsystem('cd /könyvtárnév');

parancs kiadása után az

fpsystem('könyvtárban végrehajtandó parancs');

nem fog működni, mert minden fpsystem függvényhívás után a program futása abban a könyvtárban folytatódik, ahonnan el lett indítva. Tehát egy sorba több parancsot kell beírnunk egyszerre.

Természetesen nem feltétlenül szükséges minden parancsot a saját programodba beírni; készíthetsz egy szkriptet is erre a célra (a buildfaq-ról):

 #!/bin/sh
 cd /usr/local/src/fpc/devel
 cd fpc
 make clean
 cd ..
 cd lazarus
 make clean
 cd ..
 svn up fpc >& ~/cvscheckout.log
 svn up lazarus >& ~/cvslaz.log 

Nevezd el updatelaz.sh-nak, és utána ezt hívd meg a programodból:

program LazUpdate1;
uses 
  Classes, Unix;
var 
  S: LongInt; 
begin
  S := fpsystem('updatelaz.sh')
end.

Lásd még