Differenze tra le versioni di "Peek"
(Creata pagina con "La risorsa ''Peek'' consente di leggere da un flusso di dati (''Stream'' o ''File''), senza che il puntatore interno al flusso si sposti. variabile = <FONT Color=#B22222><B>P...") |
|||
Riga 3: | Riga 3: | ||
===Differenza con l'uso di ''Read''=== | ===Differenza con l'uso di ''Read''=== | ||
− | Come è noto, con la lettura di un flusso di dati mediante la funzione ''Read'' il puntatore interno al flusso medesimo si sposta di un numero di byte pari alla | + | Come è noto, con la lettura di un flusso di dati mediante la funzione ''Read'' il puntatore interno al flusso medesimo si sposta di un numero di byte pari alla quantità di memoria occupata dal tipo di dati del byte letto. |
<BR>Così, se si legge un valore di tipo ''Intero'', il puntatore interno si sposterà in avanti nel flusso di 4 byte. <SUP>[[[#Note|Nota 1]]]</sup> | <BR>Così, se si legge un valore di tipo ''Intero'', il puntatore interno si sposterà in avanti nel flusso di 4 byte. <SUP>[[[#Note|Nota 1]]]</sup> | ||
Riga 55: | Riga 55: | ||
'''End''' | '''End''' | ||
+ | |||
+ | Pertanto l'uso della funzione "''Peek''" evita che si debba utilizzare la funzione "''Seek''" per tornare a leggere dal numero d'indice, precedente alla lettura con "''Read''", del flusso dei byte-dati. | ||
Versione delle 07:24, 20 lug 2020
La risorsa Peek consente di leggere da un flusso di dati (Stream o File), senza che il puntatore interno al flusso si sposti.
variabile = Peek #flusso
Differenza con l'uso di Read
Come è noto, con la lettura di un flusso di dati mediante la funzione Read il puntatore interno al flusso medesimo si sposta di un numero di byte pari alla quantità di memoria occupata dal tipo di dati del byte letto.
Così, se si legge un valore di tipo Intero, il puntatore interno si sposterà in avanti nel flusso di 4 byte. [Nota 1]
Vediamo un esempio usando un array di tipo Byte[]:
Public Sub Main() Dim bb As Byte[] Dim st As Stream Dim s As String bb = Byte[].FromString("abcdefghilmnop\x00") st = Memory bb.Data For Read ' Legge i primi cinque dati-byte presenti nell'array: Read #st, s, 5 ' Mostra in rappresentazione caratteri-stringa i 5 byte letti. Essi sono: "abcde". Print s ' Legge altri cinque dati-byte presenti nell'array: Read #st, s, 5 ' Mostra in rappresentazione caratteri-stringa gli altri 5 byte letti. Essi sono: "fghil". Print s st.Close End
L'uso della funzione Peek, invece, non causa tale spostamento del puntatore interno al flusso di dati letto.
Public Sub Main() Dim bb As Byte[] Dim st As Stream Dim s As String bb = Byte[].FromString("abcdefghilmnop\x00") st = Memory bb.Data For Read ' Legge i primi cinque dati-byte presenti nell'array: s = Peek #st, 5 ' Mostra in rappresentazione caratteri-stringa i 5 byte letti. Essi sono: "abcde". Print s ' Legge altri cinque dati-byte presenti nell'array: Read #st, s, 5 ' Mostra in rappresentazione caratteri-stringa gli altri 5 byte letti. Essi sono nuovamente: "abcde". Print s st.Close End
Pertanto l'uso della funzione "Peek" evita che si debba utilizzare la funzione "Seek" per tornare a leggere dal numero d'indice, precedente alla lettura con "Read", del flusso dei byte-dati.
Note
[1] Vedere anche queste pagine:
- https://www.gambas-it.org/wiki/index.php?title=Leggere_un_file_con_READ
- http://gambaswiki.org/wiki/lang/type?l=it