Differenze tra le versioni di "Definizione ed uso dei Memory Stream"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
− | La classe ''' | + | La classe '''Memory-Stream''' crea flussi che utilizzano la memoria, anziché un disco o una connessione di rete. |
Con Gambas-3 non è più possibile usare un puntatore (''Pointer'') in uno stream. Si deve invece utilizzare uno stream di memoria con l'istruzione ''MEMORY''. | Con Gambas-3 non è più possibile usare un puntatore (''Pointer'') in uno stream. Si deve invece utilizzare uno stream di memoria con l'istruzione ''MEMORY''. | ||
Riga 17: | Riga 17: | ||
Dim p As Pointer | Dim p As Pointer | ||
− | Dim | + | Dim pS As Stream |
− | Dim j | + | Dim j, by As Byte |
− | |||
p = Alloc(4) ''<Font Color= #006400>' riserviamo 4 byte da qualche parte in memoria''</font> | p = Alloc(4) ''<Font Color= #006400>' riserviamo 4 byte da qualche parte in memoria''</font> | ||
Riga 25: | Riga 24: | ||
pSt = Memory p For Write ''<Font Color= #006400>' questa memoria sarà un flusso (stream) che creeremo appositamente, e...''</font> | pSt = Memory p For Write ''<Font Color= #006400>' questa memoria sarà un flusso (stream) che creeremo appositamente, e...''</font> | ||
− | + | <Font Color= #006400>' ''...nel quale andiamo a scrivere i 4 valori byte.'' | |
− | '' ' Ogni valore byte occuperà la dimensione di 1 byte, quindi copriranno esattamente i 4 byte allocati:</font> | + | ' ''Ogni valore byte occuperà la dimensione di 1 byte, quindi copriranno esattamente i 4 byte allocati:</font> |
− | + | For j = 80 to 83 | |
− | + | Write #pS, j As Byte | |
− | + | Next | |
− | |||
− | |||
− | |||
− | |||
'''End''' | '''End''' |
Versione delle 16:36, 14 lug 2012
La classe Memory-Stream crea flussi che utilizzano la memoria, anziché un disco o una connessione di rete.
Con Gambas-3 non è più possibile usare un puntatore (Pointer) in uno stream. Si deve invece utilizzare uno stream di memoria con l'istruzione MEMORY.
Sintassi:
Flusso = MEMORY Puntatore FOR [ READ ] [ WRITE ]
- Se la parola chiave READ viene specificata, allora è permessa la lettura.
- Se la parola chiave WRITE viene specificata, allora è permessa la scrittura.
Memory Stream in modalità "For Write"
se si intende creare una sequenza di byte &h80, &h81, &h82, &h83, lo si può fare con i chr(); oppure si può scrivere:
Public Sub Button1_Click() Dim p As Pointer Dim pS As Stream Dim j, by As Byte p = Alloc(4) ' riserviamo 4 byte da qualche parte in memoria pSt = Memory p For Write ' questa memoria sarà un flusso (stream) che creeremo appositamente, e... ' ...nel quale andiamo a scrivere i 4 valori byte. ' Ogni valore byte occuperà la dimensione di 1 byte, quindi copriranno esattamente i 4 byte allocati: For j = 80 to 83 Write #pS, j As Byte Next End
Memory Stream in modalità "For Read"
In modalità "For Read" i Memory-Stream possono essere usati per dereferenziare i puntatori passati da funzioni esterne.
Public Sub Button1_Click() Dim pEst As Pointer Dim pS As Stream Dim by As Byte ' Prendiamo da una funzione esterna un valore di tipo puntatore: funzione_esterna_che_passa_un puntatore(pEst) ' Usiamo i Memory Stream in modalità di "lettura": pS = Memory pEst For Read 'Andiamo a dereferenziare e, quindi, a leggere il dato: Read #pS, by ' Ora, a fini didattici, mostriamo il valore in console: Print by End