Differenze tra le versioni di "Cercare un valore all'interno di un file aperto come un flusso di dati di tipo File"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
− | Il caso è quello in cui, avendo aperto un file in "Lettura" come tipo di dati "File" con l'istruzione "Open", si intende cercare un valore | + | Il caso è quello in cui, avendo aperto un file in "Lettura" come tipo di dati "File" con l'istruzione "Open", si intende cercare un valore costituito da uno o anche più byte. |
Mostriamo un possibile esempio in cui si cerca all'interno del flusso di dati di tipo "File" un valore formato da 4 byte (Tipo ''Integer'' ). | Mostriamo un possibile esempio in cui si cerca all'interno del flusso di dati di tipo "File" un valore formato da 4 byte (Tipo ''Integer'' ). | ||
Riga 23: | Riga 23: | ||
Read #fl, i | Read #fl, i | ||
If i == VALORE Then | If i == VALORE Then | ||
− | Print " | + | Print "Il valore è stato trovato al byte di indice: ", Seek(fl) - SizeOf(gb.Integer) |
Break | Break | ||
Endif | Endif | ||
Riga 29: | Riga 29: | ||
Endif | Endif | ||
Loop | Loop | ||
+ | |||
+ | If Seek(fl) = Lof(fl) - 1 Then Print "Valore non presente nel file." | ||
fl.Close | fl.Close | ||
'''End''' | '''End''' |
Versione delle 18:56, 22 nov 2021
Il caso è quello in cui, avendo aperto un file in "Lettura" come tipo di dati "File" con l'istruzione "Open", si intende cercare un valore costituito da uno o anche più byte.
Mostriamo un possibile esempio in cui si cerca all'interno del flusso di dati di tipo "File" un valore formato da 4 byte (Tipo Integer ).
Nelle due Costanti utilizzate vanno inseriti:
- il valore numerico da cercare
- il primo byte a sinistra del valore da cercare (pertanto se - ad esempio - il valore da cercare, come memorizzato in little-endian nel file, è: "04 03 02 01", a questa seconda Costante andrà assegnato il valore byte 04).
Private Const VALORE As Integer = valore-numerico-da-cercare (che occupi 4 byte) Private Const PRIMOBYTE As Byte = il-primo-byte-a sinistra-del-valore-numerico-da-cercare Public Sub Main() Dim fl As File Dim b As Byte Dim i As Integer fl = Open "/percorso/del/file/da/aprire" For Read Do Read #fl, b If b == PRIMOBYTE Then Seek #fl, Seek(fl) - 1 Read #fl, i If i == VALORE Then Print "Il valore è stato trovato al byte di indice: ", Seek(fl) - SizeOf(gb.Integer) Break Endif Seek #fl, Seek(fl) - (SizeOf(gb.Integer) - 1) Endif Loop If Seek(fl) = Lof(fl) - 1 Then Print "Valore non presente nel file." fl.Close End