Esempi

Questo capitolo è suddiviso in due parti:

Frammenti di codice Proteus

Stampa le linee più lunghe di 72 caratteri:

IF GT(STRLEN(L), 72)
  PRINTLN L
FI

Stampa in ordine inverso i campi di ciascuna riga, assunti separati da ',':

H = TOKNEW(L, ",")
FOR X = TOKNUM(H) TO 1 STEP -1
  PRINT TOKGET(H, X)
NEXT
PRINTLN ""
TOKFREE(H)

Somma i numeri nella prima colonna (assunta separata da ',') e stampa totale e media:

Totale = ADD(Totale, TOKEN(L, 1, ","))
IF EOF
  PRINTLN "La somma è " Totale ", la media è " FDIV(Totale, N)
FI

Ricopia un programma C ed inserisce i file inclusi disponibili:

NewL = LTRIM(L, " ")
IF STREQ(TOKEN(NewL, 1, " "), "#include")
  File = STRIPQUOTES(TOKEN(NewL, 2, " "))
  IF EQ(ISFILE(File), 1)
    FINSERT(File)
    IGNORE
  FI
FI
PRINTLN L

Stampa tutte le linee il cui primo campo è differente dal precedente:

Field1 = TOKEN(L, 1, ",")
IF STRNEQ(Field1, Prev)
  PRINTLN L
FI
Prev = Field1

Converte una data dal formato DATE_TYPE al formato YY[YY]MMDD:

NewDate = STRTRAN(DCONVDATE(Date, 2), "/", "")

Programmi Proteus completi

Nel pacchetto Proteus sono inclusi numerosi programmi di esempio, che è possibile esaminare ed utilizzare come base per sviluppare nuovi programmi.

I seguenti programmi si trovano nella sottodirectory samples della distribuzione standard; selezionando il nome del programma a lato sarà possibile vederne il codice sorgente:

437tolat.prt
trasforma del testo in formato PC-codepage 437 in formato ISO Latin 1 (per quanto possibile); dimostra le funzioni di mappatura
arc.prt crea un archivio contenente tutti i file specificati, estraibile mediante dearc.prt; dimostra le funzioni sui file
asc2ebcd.prt trasforma il file in ingresso nel file in uscita mappando i caratteri dalla codifica ASCII alla codifica EBCDC (utilizzata da IBM® AS/400™); utilizzare ebcd2asc.prt per fare l'operazione opposta. Dimostra le funzioni di mappatura.
ascstat.prt
mostra la frequenza di ripetizione di ciascun carattere in un file; dimostra vettori, parametri sulla linea di comando, formattazione risultati, attraversamento stringhe
bingo.prt
estrazione casuale dei numeri dall'1 al 90, senza reinserimento; dimostra code, vettori, il generatore di numeri casuali, una UDF
cb1000.prt introduce in emulazione di tastiera i dati in arrivo da un dispositivo connesso attraverso dispositivo Ethernet Client Bridge (tipo Symbol CB1000). Per il corretto funzionamento è necessario che il dispositivo sia configurato in modo da accettare connessioni dal PC sul quale viene fatto girare questo programma, il quale può essere installato anche come script associato al servizio Proteus. Dimostra: funzioni sui socket, funzioni per emulazione di tastiera.
cb1000db.prt salva sul database CODICI.MDB i dati in arrivo da un dispositivo connesso attraverso Ethernet Client Bridge (tipo Symbol CB1000). Per il corretto funzionamento è necessario che il CB1000 sia configurato in modo da accettare connessioni dal PC sul quale viene fatto girare questo programma, il quale può essere installato anche come script associato al servizio Proteus. Dimostra: funzioni sui socket, funzioni DAO.
check.prt verifica che il file specificato non contenga caratteri al di fuori del range ASCII 32-126, 13, 10. Dimostra alcune funzioni per il trattamento di stringhe.
checkpar.prt
verifica che le parentesi tonde, quadrate, graffe corrispondano; dimostra pile, varie funzioni su stringhe, l'uso delle UDF ONSTART e ONEND
chgdat2.prt
trasforma la prima data di ogni riga in un formato più leggibile; dimostra le funzioni predefinite sulle date, il tokenizzatore statico, la variabile predefinita MONTHS
chgdate.prt
cambia ogni data in un formato più leggibile; dimostra il tokenizzatore dinamico, REXMATCH, varie funzioni su stringhe
clipboard.prt
funzioni sulla clipboard di Windows™; dimostra come è possibile invocare funzioni esterne, dopo averle realizzate e compilate in una DLL. Si veda il capitolo sulle funzioni esterne per ulteriori informazioni.
codice32.prt funzioni per la codifica e la decodifica del Codice 32 (Farmaceutico italiano)
codqt.prt accetta codice/quantità e li salva sul file operator.TXT; dimostra le principali funzioni interattive di Proteus.
convert.prt converte il file binario in ingresso in un array introducibile in un programma C.
crc32.prt
utilizza la funzione CRC32per calcolare il test di ridondanza ciclica a 32 bit Ansi X3.66 sul primo file specificato, normalizzandolo inoltre a 512 e 1024 bytes con il byte ASCII 26
dbfcreat.prt crea un archivio DBF a partire da un file di testo; l'archivio contiene due campi di tipo carattere, "CODICE" (8 caratteri) e "DESC" (30 caratteri); il file di testo conterrà il codice nei primi 8 caratteri di ogni riga e la descrizione nei successivi 30 caratteri. Prima di trasferire i dati nel database, li ordina sul codice attraverso un AVL. Dimostra come convertire i dati numerici di Proteus in WORD o DWORD e viceversa.
dbfdump.prt stampa la struttura di un file DBF ed il suo contenuto
dearc.prt estrae i file contenuti in un archivio creato con arc.prt. I file sono estratti nella directory corrente
decnum.prt
dimostrazione di una libreria utente; UDF che stampa i numeri interi con i separatori delle migliaia e li allinea al centro, a destra o a sinistra in un certo numero di spazi
decrypt.prt
utilizza la funzione DECRYPT per decifrare il primo file specificato con le chiavi indicate; se si desidera specificare più di una chiave, racchiuderle tra virgolette; utilizzare encrypt.prt per produrre file cifrati
demime64.prt
semplice decoder Mime Base 64 per file codificati in singola sezione; utilizzare mime64.prt per codificare i file
denum.prt rimuove tutti i numeri di riga dal file sorgente, scrivendo il risultato sulla destinazione.Il programma sorgente dovrà essere un file BASIC con numeri di riga
detab.prt
elimina le tabulazioni; dimostra la funzione DETAB
doc.prt
estrae la documentazione (tra le direttive !bdoc e !edoc ) e (opzionalmente, se si specifica il parametro REM) i commenti dai file Proteus indicati; dalle stringhe estratte elimina il carattere di commento iniziale (; e #)
dynaset.prt mostra un esempio di recordset di tipo Dynaset, ottenuto attraverso una query su Sql Server. Il codice estrae tutti i clienti (CFANAGRA) i cui documenti di vendita (DOC) hanno nelle righe (DOCRIGHE) un particolare articolo; i nomi dei clienti corrispondenti sono salvati in un file di testo, dove ogni campo è separato dall'altro dal carattere "|" (pipe). Dimostra le funzioni DAO.
ebcd2asc.prt trasforma il file in ingresso nel file in uscita mappando i caratteri dalla codifica EBCDC (utilizzata da IBM® AS/400™) alla codifica ASCII; utilizzare asc2ebcd.prt per fare l'operazione opposta. Dimostra le funzioni di mappatura.
encrypt.prt
utilizza la funzione CRYPT per cifrare il primo file specificato con le chiavi indicate; se si desidera specificare più di una chiave, racchiuderle tra virgolette; utilizzare decrypt.prt per decifrare i file prodotti
entab.prt
aggiunge tabulazioni; dimostra la funzione ENTAB
extfunc.prt dimostra come è possibile invocare una funzione esterna, dopo averla realizzata e compilata in una DLL. Si veda il capitolo sulle funzioni esterne per ulteriori informazioni.
fact.prt
stampa i fattoriali di 1-20; dimostra la funzione predefinita FACT
filefunc.prt
dimostrazione di una libreria utente; UDF per:
  • verificare che un nome di file Windows™ è corretto;
  • verificare che un nome di file Dos è corretto;
  • verificare che un nome di file Unix™ è corretto;
  • verificare che un nome di percorso Windows™ è corretto;
  • verificare che un nome di percorso Dos è corretto;
  • verificare che un nome di percorso Unix™ è corretto;
  • suddividere un pathname Dos/Windows™ nelle sue componenti;
  • suddividere un pathname Unix™ nelle sue componenti
getch.prt mostra i valori restituiti dalla funzione GETCH per ogni tasto premuto, finché l'utente non preme ESC
glob.prt
dimostrazione di una libreria utente; UDF per ottenere il vettore dei file che soddisfano una certa specifica
hexdump.prt stampa in formato leggibile (esadecimale) il contenuto del file specificato
htmindex.prt
crea un nuovo file contenente tutti i bookmarks presenti in ogni file HTML corrispondente alla specifica; utilizzato per produrre l'indice analitico del manuale di Proteus; dimostra l'uso delle funzioni sulle directory, la lettura di righe da file diversi da quello di input, REXMATCH e varie funzioni su stringhe
latto437.prt
trasforma del testo in formato ISO Latin 1 in formato PC-codepage 437 (per quanto possibile); dimostra le funzioni di mappatura
liner.prt
premette il numero di riga ad ogni linea del sorgente; dimostra la possibilità di ri-elaborare lo stesso file sorgente, l'utilizzo dell'UDF ONEND
listdup.prt trova i file identici per contenuto nella cartella specificata e visualizza i loro nomi; dimostra l'utilizzo della funzione CRC32
matrix.prt
dimostrazione di una libreria utente; UDF che implementano le operazioni su una matrice simulandola attraverso i vettori
mdbdump.prt visualizza il contenuto di tutte le tabelle contenute nel database MDB specificato come primo parametro. Dimostra le funzioni DAO.
mime64.prt
semplice encoder Mime Base 64 per file binari; utilizzare demime64.prt per decodificare i file prodotti
mulblnk.prt
sostituisce due spazi per ogni spazio; aggiunge due spazi dopo '(', due spazi prima di ')', due spazi prima e dopo ','; dimostra come il numero dei separatori sia ininfluente in un programma Proteus (se eseguito su un programma valido, restituisce un programma valido e funzionalmente identico, a parte il numero di spazi in eventuali stringhe)
myfact.prt
stampa i fattoriali di 1-20; dimostra l'utilizzo di una UDF ricorsiva
palind.prt
stampa tutti i palindromi più lunghi di due caratteri presenti nell'input; dimostra il tokenizzatore statico, la funzione REVERSE, l'utilizzo di una UDF
pctune.prt suona una melodia in formato RTTTL attraverso lo speaker del PC. Dimostra l'utilizzo della funzione BEEP.
ping.prt invia ping ad un indirizzo remoto, visualizzando i tempi di risposta, finché l'utente non preme Esc sulla tastiera. Dimostra l'utilizzo delle funzioni sui Socket e come convertire i dati numerici di Proteus in WORD o DWORD e viceversa.
prnform.prt
esempio di script CGI: riceve un form e ritorna una pagina HTML con i valori dei campi
protform.prt
pretty printer per programmi Proteus; aggiunge indentazione standard e mantiene le righe sotto i 75 caratteri di lunghezza; effettua anche un rudimentale controllo sulla sintassi; se eseguito su un programma Proteus corretto, restituisce un programma funzionalmente identico; dimostra:
prt2htm.prt
formatta un programma Proteus in HTML, con evidenziazione sintattica; il testo è convertito in Iso Latin 1 da PC-437, se specificato.

Questo programma è stato utilizzato per formattare tutti gli esempi in questo manuale; una sua variante, che ordina alfabeticamente i file HTML e li collega gli uni agli altri, ha prodotto gli esempi di questo capitolo.

remblnk.prt
rimuove tutte le righe bianche; programma elementare
remc.prt
rimuove tutti i commenti C-style; dimostra molte funzioni su stringhe
remcpp.prt
rimuove tutti i commenti C++ - style; dimostra molte funzioni su stringhe
remvb.prt rimuove i commenti dai file Visual Basic specificati; dimostra molte funzioni su stringhe
rex.prt
stampa una sequenza alternata di '1' e '0'; l'interesse risiede nel contenuto del programma, che dimostra moltissimi esempi di espressioni regolari estese e semplici
scanner.prt introduce in emulazione di tastiera i dati in arrivo da un dispositivo seriale (ad esempio uno scanner per codici a barre). Questo programma può essere installato come script associato al servizio Proteus. Dimostra l'utilizzo della funzione SENDKEYS e l'uso delle porte seriali.
send.prt invia un file sulla porta seriale e con i parametri specificati; dimostra le funzioni sulle seriali
sendlpt.prt invia un file sulla porta parallela (invio diretto, senza passare per driver di Windows™); dimostra le funzioni sui file di Windows™
simpremi.prt questo programma simula un generatore di premi; dimostra l'uso del generatore di numeri casuali 
sngblnk.prt
rimpiazza linee bianche multiple con una singola riga bianca; programma elementare
spooler.prt verifica la presenza di un file; nel caso esista e sia scrivibile (quindi non bloccato per aggiornamento da altri processi), lo elabora inviando delle stringhe (ad esempio i comandi per produrre un'etichetta su una stampante per barcode) unendole con i dati disponibili nel file. La stampante alla quale vengono inviati i dati è specificata attraverso l'indirizzo di rete e la porta. Dimostra l'utilizzo delle funzioni sui Socket.
statc.prt
statistiche su un programma C; riporta:
  • il numero complessivo di linee;
  • il numero e la percentuale di righe non bianche e fuori commento;
  • il numero e la percentuale delle direttive;

dimostra:

tables.prt
tabelline dall'1 al 10; dimostra un impiego della libreria matrix.prt
test.prt
dimostra l'uso delle librerie decnum.prt e filefunc.prt
todos.prt
trasforma un file di testo nel formato Dos; dimostra la trasformazione implicita di Proteus
tolower.prt rinomina tutti i file corrispondenti alla specifica in modo che il loro nome risulti costituito solo da caratteri minuscoli
tomac.prt 
trasforma un file di testo nel formato Macintosh™; dimostra l'identificatore predefinito EOL
toshort.prt rinomina tutti i file corrispondenti alla specifica nel formato Dos (8 + 3 caratteri)
tounix.prt
trasforma un file di testo nel formato Unix™; dimostra l'identificatore predefinito EOL
toupper.prt rinomina tutti i file corrispondenti alla specifica in modo che il loro nome risulti costituito solo da caratteri maiuscoli
txtform.prt
formatta il testo in linee di non più di 60 caratteri di lunghezza; inizia una nuova riga ad ogni '.'; dimostra il tokenizzatore statico ed alcune funzioni su stringa
uplog.prt invia un file sulla porta seriale e con i parametri specificati, salvando tutti i caratteri ritornati dalla periferica destinataria; dimostra le funzioni sulle seriali
uudecode.prt
decodifica un file UU-encoded in un'unica sezione
uuencode.prt
semplice UU-encoder che codifica un file binario
wc.prt
stampa alcune statistiche sul file sorgente:
  • nome;
  • dimensione;
  • numero e percentuale di caratteri non-bianchi;
  • numero di linee;
  • numero di parole.

Dimostra il tokenizzatore statico, la UDF ONEND

xcomp.prt
permette di confrontare un gruppo di file con un'altro in un differente albero di directory; dimostra come Proteus sia in grado di leggere indifferentemente file binari o di testo, le funzioni ricorsive, l'accesso alle variabili pubbliche da UDF
xmas.prt stampa un testo sotto forma di albero, con un singolo carattere in cima, 3 caratteri nella seconda riga, 5 caratteri nella terza, ecc.

 

Inizio pagina Prossimo argomento Argomento precedente Indice per argomenti Indice analitico
Midnight Lake iPhone Case Black Women Shoes Black Flat Shoes Leather Flats Black Patent Ballerinas Black Ballet Shoes Casual Shoes Black Shoes Women Balle Record Player Cufflinks Best iPhone XR Clear Cases iPhone XS/XS Max Leather Cases Sale Best iPhone 8/8 Plus Silicone Cases iPhone 7/7 Plus Cases & Screen Protector New Cases For iPhone 6/6 Plus iPhone 8 Case Sale iPhone Xr Case Online iPhone 7 Case UK Online iPhone X Case UK Sale iPhone X Case Deals iPhone Xs Case New Case For iPhone Xr UK Online Case For iPhone 8 UK Outlet Fashion Silver Cufflinks For Men Best Mens Cufflinks Outlet Online The Gold Cufflinks Shop Online Cheap Shirt Cufflinks On Sale Nice Wedding Cufflinks UK Online Top Black Cufflinks UK Online Mens Cufflinks Online Silver Cufflinks For Men Men Cufflinks UK Sale Gold Cufflinks UK Online Gold Cufflinks UK Silver Cufflinks UK Shirt Cufflinks Discount Online Mens Cufflinks Deals & Sales Girls Shoes For Dance Fashion Ballet Dance Shoes Best Ballet Flats Shoes UK Online Cheap Ballet Pointe Shoes UK Online Best Ballet Shoes Outlet Best Dance Shoes Sale Cheap Ballet Flats Sale UK Best Pointe Shoes Online UK Ballet Dance Shoes UK Shoes For Dance UK Best Ballet Slippers Shop Best Yoga Shoes Hotsell