Libreria delle ProcedureGestione Tastiera

Entra nella Libreria GIOBE.TPU

 INexad 

CODICE SORGENTE [3 di 4]  

    
bulletLa procedura è scritta in Pascal. L’analisi delle istruzioni del programma sorgente evidenzia le varie fasi della procedura:
    
bulletpredispone il campo di acquisizione con (“tipo”=1), o senza (“tipo”=0), cornice [1]
bulletorganizza il ciclo d'acquisizione dei caratteri della stringa [2]
bulletcontrolla la presenza del cursore [3]
bulletlegge di tasti, con “eco a video” e memorizza nel vettore i soli caratteri ammessi [4]
bulleteventuale servizio del tasto <BackSpace> [5]
bulletsegnala errore se si cancella indietro troppo [6]
bulletsegnala errore alla pressione di ogni altro tasto [7]
bulletuscita dal ciclo d’acquisizione esclusivamente con la pressione di <Enter> [8]
bulletopera la conversione tra la stringa esadecimale e il suo valore long-integer [9]
bulletse “giust”=1 “giustifica a destra” i caratteri nella stringa d’acquisizione  [10]
    
Codice Sorgente   Mostra Effetto Esegui il Programma Scarica l'Esempio d'Applicazione
PROCEDURE INexad (VAR lunghezza:integer; 
                 VAR
stringa:Array of char;
                  
VAR numero:longint;
                   max
,rig,col,txt,sfo,tipo,giust:integer);
VAR
l,i,j,r,err:integer; 
    tasto:char;
   
ex,tot:longint;
BEGIN
  RipCur;
 {------[1]---------------------------------------------}
  textcolor(txt);
  textbackground(
sfo);
  IF
tipo<>0 THEN
   {Cornice1(rig  , col , lar ,alt,txt,sfo,tipo,modo)}
    Cornice1(
rig-1,col-3,max+6, 3 ,txt,sfo,  2 ,  1) ;
  ELSE
    FOR i:=1 TO
max+2 DO 
    begin
     gotoxy(
col-2+i,rig); write (' '); 
    end; 

 {-----[2]----------------------------------------------}
  i:=0;
  gotoxy(
col,rig); 
 
REPEAT 
    IF i<max THEN RipCur ELSE ViaCur; 
{---[3]----------} 
    REPEAT UNTIL keypressed; 
    tasto:=readkey;   
    IF ((tasto>='0')AND(tasto<='9') OR
       (UpCase(tasto)>='A') AND (UpCase(tasto)<='F'))  
       AND (i<max)  THEN
 
    begin                             
{---[4]----------}
      i:=i+1;                         
{* Gestione dei *}
     
stringa[i]:=tasto;              {*   Caratteri  *}
      write(tasto);                   
{*     Validi   *}
    end 
    ELSE IF tasto=char(8) THEN  
       {---[5]----------} 
      IF i>=1 THEN                    
{* Gestione per *}
    
  begin                            {*   il  tasto  *}
        i:=i-1;                       
{*   BackSpace  *}
        write(tasto,' ',tasto);RipCur;
{*              *}
      end 
      ELSE                            
 {---[6]----------} 
      begin                           
{* In ogni altro*}
        sound(100);delay2(300);       
{* caso segnala *}
        nosound;                      
{*    errore    *} 
      end; 
    ELSE IF tasto<>char(13) THEN      
 {---[7]----------} 
    begin                             
{* In ogni altro*}
      sound(100);delay2(300);         
{* caso segnala *}
      nosound;                        
{*    errore    *}
    end; 
 
UNTIL tasto=char(13);                {---[8]----------} 

 {-----[9]----------------------------------------------}
  tot:=0;
  FOR n:=1 to i do
  begin
    ex:=1; 
    FOR j:=1 TO i-n DO           {*Calcola il Moltipli-*}
      ex:=ex*16;                 {* catore  in  Base 16*}

    CASE stringa[n] OF             {*******************}
    '0'..'9':val(stringa[n],r,err);{*                 *}
    'A' :r:=10;                     {*                 *}
    'B' :r:=11;        
            {*Trasforma ciascun*}
    'C' :r:=12;                    
{*   carattere     *}
    'D' :r:=13; 
                   {*   in Numero     *}
    'E' :r:=14; 
                   {*                 *}
    'F' :r:=15; 
                   {*                 *}
    end;                            {*******************}
    tot:=tot+(r*ex);  {*Aggiorna il Totale Progressivo *}
  end; 
  numero:=tot;                  {*Lascia le 2 infor-*}
  lunghezza:=i;                 {* mazioni in uscita  *}
 {-----[10]---------------------------------------------}
  IF (
giust=1) AND (i<>max) THEN 
  begin                             
{*  Se è  il caso *}
     gotoxy(col,rig);               
{* giustifica   a *}
     FOR i:=1 TO
max-lunghezzaDO    {*  destra   nel  *} 
       write (' ');                
  {*campo di acqui- *}
     FOR i:=1 TO
lunghezzaDO        {*sizione i carat-*}
       write (
stringa[i]);          {*  teri digitati *}
  end;                            
   {* in  precedenza *}
END;
    
Pagina Precedente Tastiera Pagina Successiva INexad Lezioni - Vai al DownLoad dei files DOC Torna al Menu "Tastiera"
Esempio Sorgente Mostra
28 di 29

    

PASCAL  »

Libreria Giobe | Librerie Standard | Allegati | Applicazioni | Info | Download
PROCEDURE  »   Caratteri | Mouse | Tastiera | Tempo, Data & Ora
Box | Cornici | Cursore | Aree a Riga Intera | Aree a Schermo Totale
FUNZIONI  »   Caratteri | Mouse | Tastiera | Tempo, Data & Ora
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati