Cloud with rain
.:G
G:.
0 and 1 serie, black on white
pulled card
myjsp.feelinglinux.com
ver. 1.1.9-4
Hallo, welcome to my world.
Here you can find some stuff about computer science.
<<< Enjoy your visit! >>>
0 and 1 serie, white on black

Kylix: console application

        Scritto: Giansante Gabriele, 2001     

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".
  • Dal menu, selezionare "File->New" e cliccare su "New, Console Application".
  • Inserire la riga "writeln('Hallo world')" come corpo dell'applicazione.
  • Compilare il programma (avendo prima cura di salvare il tutto).
  • Supponendo di aver chiamato il programma "world.dpr", posizionarsi nella directory del programma e scrivere "./world" dalla shell. Il risultato e' facilmente intuibile: verra' stampata la riga "Hello 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 routine.

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.
Pubblicita'
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").


Hai trovato utile questo articolo?
Aiutami a condividerlo o metti un "mi piace".
Grazie mille!


Gli strumenti di condivisione (Google+, Facebook) sono visibili in alto a destra solo dopo aver accettato la policy di utilizzo dei cookie per questo sito.
FAQ - Come faccio a cambiare la mia scelta?

 

Strumenti (myjsp.feelinglinux.com)
Gioco: allenamento con la tastiera Strumenti di codifica/decodifica URI (%-encoding) e Base64 Strumenti di calcolo online per IP e Reti
QUIZ GAME
Quiz game

Cerca @myjsp.feelinglinux.com

Pubblicita'