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.
(Creata pagina con "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 costituisco da uno o anche più byt...")
 
Riga 6: Riga 6:
 
<BR> - il primo byte a sinistra del valore da cercare (pertanto se - ad esempio - il valore da cercare, <SPAN Style="text-decoration:underline">come memorizzato in little-endian nel file</span>, è: "04 03 02 01", a questa seconda Costante andrà assegnato il valore byte 04).  
 
<BR> - il primo byte a sinistra del valore da cercare (pertanto se - ad esempio - il valore da cercare, <SPAN Style="text-decoration:underline">come memorizzato in little-endian nel file</span>, è: "04 03 02 01", a questa seconda Costante andrà assegnato il valore byte 04).  
 
  Private Const VALORE As Integer = <FONT Color=gray>''valore-numerico-da-cercare'' (che occupi 4 byte)</font>
 
  Private Const VALORE As Integer = <FONT Color=gray>''valore-numerico-da-cercare'' (che occupi 4 byte)</font>
  Private Const LITTLE As Byte = <FONT Color=gray>''il-primo-byte-a sinistra-del-valore-numerico-da-cercare''</font>
+
  Private Const PRIMOBYTE As Byte = <FONT Color=gray>''il-primo-byte-a sinistra-del-valore-numerico-da-cercare''</font>
 
   
 
   
 
   
 
   
Riga 19: Riga 19:
 
   Do  
 
   Do  
 
     Read #fl, b
 
     Read #fl, b
     If b == LITTLE Then  
+
     If b == PRIMOBYTE Then  
 
       Seek #fl, Seek(fl) - 1
 
       Seek #fl, Seek(fl) - 1
 
       Read #fl, i
 
       Read #fl, i

Versione delle 18:31, 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 costituisco 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 "Indice: ", Seek(fl)
       Break 
     Endif
     Seek #fl, Seek(fl) - (SizeOf(gb.Integer) - 1)
   Endif
 Loop 

 fl.Close

End