' Rapid-Q by William Yu (c)1999-2000 . ' ================================================================================ ' Upload_il_tuo_script_su_Rapidq.it ' Direttive_del_compilatore Le direttive sono istruzioni non appartenenti al linguaggio BASIC standard che danno al compilatore istruzioni specifiche su come generare l'eseguibile dal codice dato. Le direttive sono di solito messe all'inizio nel file del codice sorgente, sebbene alcune direttive possano essere messe a limitare ("wrap around") l'intera sezione di codice a cui si applicano. $APPTYPE La direttiva $APPTYPE forza il compilatore a creare uno specifico tipo di applicazione. La sintassi per $APPTYPE è la seguente: $APPTYPE [ CGI | CONSOLE | GUI ] I tre tipi di applicazioni possibili sono le seguenti: CGI - Interfaccia comune di accesso (Common Gateway Interface). Usata nelle applicazioni basate sul web. Una applicazione CGI potrebbe collegare input e output di una pagina html di un sito web al file "grezzo" del database presente sul server del sito web. CONSOLE - Output solo come testo, molto simile ad uno schermo standard DOS. Un programma di console , sebbene sia solo testo, accede ancora alle risorse che sono disponibili alle applicazioni grafiche, e quindi non possono essere eseguite su Windows a 32-bit , ma solo su piattaforma DOS. GUI - Interfaccia grafica utente (Graphical User Interface). Il tipo di applicazione con la quale gli utenti Windows sono abituati a lavorare. Tutti gli input ed output della applicazione GUI sono gestiti mediante l'uso di form grafici, pulsanti, caselle che sono disegnate sullo schermo di Windows. Un esempio dell'uso di $APPTYPE: $APPTYPE CONSOLE Il $APPTYPE default viene considerato la GUI, tuttavia se non ci sono direttive $APPTYPE nel file sorgente, Rapid-Q automaticamente rileva che tipo di applicazione deve essere creata analizzando il codice sorgente. $TYPECHECK La direttiva $TYPECHECK attiva<7disattiva l'opzione che forza tutte le variabili presenti nel codice sorgente ad essere/non essere dichiarate prima di essere usate. Il linguaggio BASIC tradizionale presenta un type checking "rilassato". Questo significa che se una variabile non è stata precedentemente dichiarata mediante l'istruzione DIM, viene creata al momento del suo impiego nel codice. Il principale problema determinato dall'usare una variabile in questo modo (senza dichairarla prima) è la generazione di bugs , difficili da individuare, dovuti ad una variabile creata per errore di digitazione del nome di una preesistente variabile, ossia al posto della vecchia variabile viene messa la nuova (il nome errato della vecchia) perchè il compilatore penserà che sia stata creata al momento dell'uso al nuova variabile. Attivando il type checking, tutte le variabili usate con il file sorgente devono essere dichiarate con una istruzione DIM. Se il compilatore incontra una variabile non dichiarata nel file sorgente, viene generato un errore. La sintassi per $TYPECHECK è la seguente: $TYPECHECK [ OFF | ON ] L'impostazione di default per $TYPECHECK è OFF. Un esempio dell'uso di $TYPECHECK: $TYPECHECK ON Con l'opzione $TYPECHECK disattivata, la seguente linea di codice sarebbe valida: HoldAmount = NewAmount + 10 Mentre con l'opzione $TYPECHECK attivata, le variabili devono essere prima dichiarate: DIM HoldAmount AS INTEGER DIM NewAmount AS INTEGER HoldAmount = NewAmount + 10 E' possibile attivare/disattivare il type checking ogni volta che lo si vuole, in modo che sia possibile usarlo solo per una porzione del codice sorgente e poi disabilitarlo di nuovo. $INCLUDE La direttiva $INCLUDE agisce come se il nome del file fornito come parametro fosse inserito direttamente nel file di codice sorgente nel punto dove è presente la direttiva $INCLUDE. Questo rende più facile effettuare la manutenzione di un gruppo di procedure messe in un file esterno senza dover fare "taglia ed incolla" delle routines inciascun nuovo file di codice sorgente. Puoi posizionare la direttiva $INCLUDE ovunque nel tuo programma, eccetto all'interno di una procedura ( SUB, FUNCTION, SUBI, FUNCTIONI ). La sintassi di $INCLUDE è la seguente: $INCLUDE [ NomeFile ] Un esempio dell'uso di $INCLUDE che è visto nella maggior parte del codice sorgente di Rapid-Q : $INCLUDE "RAPIDQ.INC" Il file "RAPIDQ.INC" è una definizione esterna che è composta dall'insieme delle costanti BASIC che predefiniscono i valori TRUE, FALSE, colori, ed impostazioni dei componenti. Questo file rende più facile capire le impostazioni all'interno del codice sorgente quale clBlue per il colore blu sl posto di&HFF0000. $RESOURCE La direttiva $RESOURCE è un modo di incapsulare file esterni nel file compilato .EXE. Una volta che un file è stato incapsulato, il file originale esterno non deve essere distribuito con la applicazione. La sintassi per $RESOURCE è la seguente: $RESOURCE Risorsa AS Nomefile Un esempio dell'uso di $RESOURCE: $RESOURCE RES_BMP1 AS "LOGO.BMP" $RESOURCE RES_WAV1 AS "GREETING.WAV" Sebbene qualsiasi nome di file esterno passato alla direttiva $RESOURCE sia incorporato nel file eseguibile finale dell'applicazione, solo le risorse grafiche ( .BMP file) possono essere gestite direttamente senza dover essere prima estratte. $DEFINE La direttiva $DEFINE è un modo per rinominare o creare una nuova parola riservata "keywords" da usare nel proprio codice sorgente. Le definizioni sono limitate alla singola keyword. Gli operatori, i segni di punteggiatura o una serie di keywords o tokens non possono essere usate con $DEFINE. Questo significa che non sono possibili definizioni di funzioni come in C. La sintassi per $DEFINE è la seguente: $DEFINE NuovaDefinizione [ VecchiaDefinizione ] La "vecchiadefinizione" non è necessaria se la keyword non rinomina una precedente keyword. Un esempio dell'uso di $DEFINE: $DEFINE INT16 SHORT $DEFINE INT32 LONG $DEFINE DEBUGGING $UNDEF La direttiva $UNDEF viene usata per rimuovere, o per non-definire, una precedente definizione creata con la direttiva $DEFINE. Puoi specificare multiple istanze di non-definizione sulla stessa linea di codice, separate da una virgola. La sintassi per $UNDEF è la seguente: $UNDEF NuovaDefinizione [ , VecchiaDefinizione ] Un esempio dell'uso di $UNDEF: $UNDEF INT16, INT32 $UNDEF DEBUGGING $IFDEF...$ENDIF ed $IFNDEF...$ENDIF Le due direttive $IFDEF ed $IFNDEF sono controlli del compilatore che permettono al programmatore di bloccare (escludere) delle sezioni di codice soregente che, saranno/non saranno compilate nell'aplicazione finale inbase all'esistenza o meno della parole chiave keyword creata ocn una precedente direttiva $DEFINE. Ciascuna direttiva $IFDEF ed $IFNDEF deve avere una equivalente direttiva $ENDIF per delimitare la fine del blocco sottoposto a compilazione condizionale. La direttiva $IFDEF permetterà al codice sorgente delimitato di essere compilato solo se la definizione esiste. La sintassi di $IFDEF è la seguente: $IFDEF NuovaDefinizione codice sorgente contenuto dentro il blocco delimitato dalla direttiva $ENDIF La direttiva $IFNDEF permetterà al codice sorgente presente nel blocco da essa delimitato di essere compilato se solo la definizione non esiste. La sintassi di $IFDEF è la seguente: $IFNDEF NuovaDefinizione codice sorgente contenuto dentro il blocco delimitato dalla direttiva $ENDIF Per evitare di tenere diverse direttive $IFDEF ed $IFNDEF una dietro l'altra è possibile impiegare la direttiva $ELSE per alternare i blocchi di codice alternativi $ELSE: $IFDEF DEBUGGING ' se DEBUGGING è stato definito compila questa sezione di codice sorgente $APPTYPE CONSOLE $ENDIF $IFNDEF DEBUGGING ' se DEBUGGING non è stato definito compila questa porzione di codice sorgente $APPTYPE GUI $ENDIF Può essere riscritto in questo modo: $IFDEF MyDEF ' se DEBUGGING è stato definito compila questa porzione di codice sorgente $APPTYPE CONSOLE $ELSE ' se DEBUGGING non è stato definito compila questa altra porzione di codice sorgente $APPTYPE GUI $ENDIF $OPTION La direttiva $OPTION agisce sul compilatore in diversi modi in base a quale dei diversi parametri sono passati. La sintassi per $OPTION è la seguente: $OPTION NomeOpzione[ parametri ] I NomeOpzione validi che possono essere passati sono i seguenti: BYREF $OPTION BYREF Questo cambia il modo con cui le variabili sono passate. Per default, Rapid-Q passa alle variabili per valore. Questa opzione passa tutte le variabili per riferimento. Usare con estrema cautela. DECIMAL $OPTION DECIMAL CarattereDecimale Il carattere decimale di default è il punto ( "." ). Qualsiasi carattere venga passato con l'opzione DECIMAL sarà trattata come un punto decimale quando incontrato in una stringa che viene processata con la funzione VAL. DIM $OPTION DIM Tipo di dato Questo cambia il tipo di default per le variabili non dichiarate. Per default, tutte le variabili non dichiarate sono ritenute essere del tipo DOUBLE se non viene fornito alcun suffisso. Tipi di dati validi con DIM : $OPTION DIM BYTE $OPTION DIM WORD $OPTION DIM DWORD $OPTION DIM SHORT $OPTION DIM INTEGER $OPTION DIM LONG $OPTION DIM SINGLE $OPTION DIM DOUBLE $OPTION DIM STRING EXPLICIT $OPTION EXPLICIT Questo equivale alla direttiva $TYPECHECK ON. Viene mantenuta per la compatibilità con Microsoft VisualBASIC. GTK $OPTION GTK Il compilatore usa GTK al posto di XFORMS per le applicazioni UNIX . ICON $OPTION ICON "percorso\nomefile.ico" Questo sostituisce la icona di default del file eseguibile finale. Prego notare che la icona usata per la sostituzione deve avere una risoluzione 32x32 pixel con 16 colori ( 766 bytes ). $OPTIMIZE La direttiva $OPTIMIZE può essere usato per ridurre le dimensioni del byte code eliminando le istruzioni non necessarie. Questo è molto utile se vengono incorporati moduli di codice sorgente molto ampi con la direttiva $INCLUDE. Qualsiasi procedura che non è usata attualmente dall'applicazione finale non viene compilata nel file .EXE . Il principalce problema di attivare questa direttiva è un incremento notevole del tempo di compilazione, quindi è meglio usarla solo nella creazione del file finale per la distribuzione. Quando usi questa opzione, sii sicuro che sia la prima istruzione nel codice sorgente. La sintassi per $OPTIMIZE è la seguente: $OPTIMIZE [ OFF | ON ] La impostazione di default è $OPTIMIZE OFF. $ESCAPECHARS La direttiva $ESCAPECHARS , quando attivata (ON), permette l'uso delle sequenze escape nelle stringhe del programma. Le sequenze Escape possono sia essere caratteri sia numeri. La sensibilità alle maiuscole è attiva nella sequenza di escape. La sintassi $ESCAPECHARS è la seguente: $ESCAPECHARS [ OFF | ON ] L'impostazione di default è $ESCAPECHARS OFF. La seguente è una lista di sequenze escape che possono essere usate: \a - Alarm bell \b - Backspace \f - Form feed \n - New Line \r - Carriage return \t - Horizontal Tab \v - Vertical Tab \\ - Backslash \" - Double quote \### - ### è un codice ascii 0..255 \xHH - HH è un valore 00..FF PRINT "\"" PRINT "\65" PRINT "\x42" L'esempio di sopra fornirebbe come risultato una ", una A, e una B [1] ' =============================================================================== ' 2003 Holyguard.net - 2007_Abruzzoweb