Libreria delle ProcedureGestione Tastiera

Entra nella Libreria GIOBE.TPU

 INstring 

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]
bulletse “giust”=1 “giustifica a destra” i caratteri nella stringa d’acquisizione  [9]
    
Codice Sorgente   Mostra Effetto Esegui il Programma Scarica l'Esempio d'Applicazione
PROCEDURE INstring (VAR lunghezza:integer; 
                    
VAR stringa:Array of char; 
                    
max,rig,col,txt,sfo,tipo,giust:integer);
VAR n,l,i,j,r,err:integer;
    ex,tot:longint;
    tasto:char;
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>=' ') AND (i<
max       {---[4]----------} 
    begin                             
{* Gestione dei *}
      i:=i+1;                         
{*   Caratteri  *}
     
stringa[i]:=tasto;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]----------} 

 
lunghezza:=i;      {*Lascia l'informazione in uscita*}
 {-----[9]----------------------------------------------}
  IF (
giust=1) AND (i<>max) THEN 
  begin                             
{*  Se è  il caso *}
     gotoxy(col,rig);               
{* giustifica   a *}
     FOR i:=1 TO max-lunghezza DO   
{*  destra   nel  *} 
       write (' ');                
  {*campo di acqui- *}
     FOR i:=1 TO lunghezza DO       
{*sizione i carat-*}
       write (
stringa[i]);          {*  teri digitati *}
  end;                            
   {* in  precedenza *}
END;
    
Pagina Precedente Tastiera Pagina Successiva INstring Lezioni - Vai al DownLoad dei files DOC Torna al Menu "Tastiera"
Esempio Sorgente Mostra
20 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