|
||
| [IT] Kylix: console application | ||
|
Kylix: console application Kylix e' un ambiente integrato per la programmazione visuale in Object Pascal. Chi ha lavorato con il vecchio Pascal ed in particolare con il Turbo Pascal, ricordera' sicuramente l'ambiente DOS ed un tipo di programmazione completamente diverso e soprattutto senza il sistema grafico (o le interfacce) dei moderni sistemi operativi. Sia in DOS che con una qualsiasi shell Linux (attenzione, non sto assolutamente paragonando DOS e le shell Linux) si usano programmi a cui generalmente non interessa la grafica (intesa come formato dell'output) o le enormi librerie grafiche proprie della programmazione visuale. Tipicamente i programmi svolgono il loro compito presentando un output su file o su video, in formato esclusivamente testuale. Questi programmi, ad esempio, possono leggere in input una stringa ed elaborarla, oppure prendere dei parametri dalla linea di comando. Con Kylix si possono realizzare anche applicazioni di questo tipo. Come primo esempio, vogliamo realizzare il famoso ed immancabile "Hallo world".
//world.dpr
//---------
program world;
{$APPTYPE CONSOLE}
begin
writeln('Hallo world');
end.
Notare la direttiva {$APPTYPE CONSOLE} che appunto indica al compilatore che si
tratta di un'applicazione per la "console". Notare anche che il file principale
dell'applicazione ha come estensione ".dpr" e non ".pas".
Tutte le tecniche di manipolazione dei dati di input e di output rimangono valide. L'unica cosa che non si puo' fare e' utilizzare i componenti visuali in modo totale. In effetti, tali componenti possono tranquillamente essere usati quasi tutti, con la condizione che non vengano mai visualizzati. Perche' doverli usare? Alcuni forniscono delle interfacce molto utili, come, ad esempio, l'accesso ai database, senza obbligare il programmatore a riscrivere proprie outine. Vediamo un altro esempio, piu' complicato del precedente, ma ancora semplicissimo:
//saluta.dpr
//----------
program saluta;
{$APPTYPE CONSOLE}
var stringa: string;
begin
write('Come ti chiami?');
readln(stringa);
writeln('Ciao '+stringa);
end.
Questo programma banale, chiede in ingresso un nome e stampa un saluto.
Perche' scrivere applicazioni per la console e non applicazioni grafiche? Innanzitutto la domanda stessa (non e' stata scelta a caso) pone un tranello. Non e' che si deve scrivere applicazioni di testo piuttosto che applicazioni con le interfacce grafiche dei Window manager. Dipende dall'utilita' del programma. Un comando da usare in un task automatico del sistema operativo e' un esempio di applicazione che tipicamente non ha bisogno della grafica. Gli esempi sono innumerevoli, ma in particolare, vediamo come relizzare un programa che legge una variabile di ambiente, in particolare LD_LIBRARY_PATH. Fra le unita' fornite con Kylix, vi e' "Libc.pas", un'interfaccia alle API Linux piuttosto completa. Fra le funzioni disponibili (uso di socket, mount di dispositivi, gestione dei permessi, ecc.) vi sono quelle per la gestione delle variabili di ambiente. Useremo quindi "Libc.pas".
//ambiente.dpr
//------------
program ambiente;
{$APPTYPE CONSOLE}
uses Libc;
begin
writeln(getenv('LD_LIBRARY_PATH');
end.
Nei casi piu' comuni, se eseguito direttamente dalla shell fornira' "/usr/lib",
mentre se eseguito dall'IDE "/<path_instalazione_kylix>/kylix/bil;/usr/bin".
Un po' piu' complesso: vogliamo stampare il valore della variabile richiesta in
ingresso. Si vuole stampare il contenuto di un numero indefinito di variabili,
fino alla ricezione della stringa "exit". Le variabili inesistenti,
semplicemente froniranno un risultato vuoto.
//ambiente2.dpr
//-------------
program ambiente2;
{$APPTYPE CONSOLE}
uses Libc;
var variabile: String;
procedure LeggiVariabile;
begin
write('Inserisci la variabile da leggere: ');
readln(variabile);
end;
begin
writeln('Inserisci "exit" per uscire.');
LeggiVariabile;
while not (variabile='exit') do
begin
writeln('$'+variabile+': '+getenv(PChar(variabile)));
LeggiVariabile;
end;
end.
Non c'e' alcun limite alle applicazioni per la console. Se le funzioni di cui si
ha bisogno non fossero gia' presenti nelle unit di Kylix, potrebbero comunque
essere importate dalle librerie opportune (mediante interfacce ai file ".so").
|
||
(c) 1999-2006
|