Differenze tra le versioni di "Ftell ()"
Da Gambas-it.org - Wikipedia.
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 2: | Riga 2: | ||
long int '''ftell''' (FILE *__stream) | long int '''ftell''' (FILE *__stream) | ||
restituisce la posizione corrente del puntatore del file rispetto all'inizio del file medesimo. | restituisce la posizione corrente del puntatore del file rispetto all'inizio del file medesimo. | ||
+ | |||
Volendola utilizzare in Gambas, bisognerà dichiararla con ''Extern'', nonché bisognerà dichiarare la libreria di C: ''libc.so.6'', nella quale la funzione è contenuta: | Volendola utilizzare in Gambas, bisognerà dichiararla con ''Extern'', nonché bisognerà dichiarare la libreria di C: ''libc.so.6'', nella quale la funzione è contenuta: | ||
Private <FONT color=#B22222>Extern ftell</font>(__stream As Pointer) As Long In "libc:6" | Private <FONT color=#B22222>Extern ftell</font>(__stream As Pointer) As Long In "libc:6" | ||
− | + | Semplice esempio uso in Gambas in combinazione con le funzioni "fwrite()", "fseek()" e "fclose()": | |
− | |||
− | Semplice esempio uso in Gambas in combinazione con le funzioni | ||
Library "libc:6" | Library "libc:6" | ||
Riga 27: | Riga 26: | ||
− | + | Public Sub Main() | |
Dim p, pr As Pointer | Dim p, pr As Pointer | ||
Riga 33: | Riga 32: | ||
Dim d, n, i As Integer | Dim d, n, i As Integer | ||
− | s = "<FONT Color= | + | s = "<FONT Color=darkgreen>''/percorso/del/file/da/leggere''</font>" |
d = Stat(s).Size | d = Stat(s).Size | ||
pr = Alloc(SizeOf(gb.Byte), d) | pr = Alloc(SizeOf(gb.Byte), d) | ||
Riga 51: | Riga 50: | ||
pr = 0 | pr = 0 | ||
− | + | End |
Versione attuale delle 16:30, 14 giu 2024
La funzione della libreria di C
long int ftell (FILE *__stream)
restituisce la posizione corrente del puntatore del file rispetto all'inizio del file medesimo.
Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché bisognerà dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta:
Private Extern ftell(__stream As Pointer) As Long In "libc:6"
Semplice esempio uso in Gambas in combinazione con le funzioni "fwrite()", "fseek()" e "fclose()":
Library "libc:6" ' FILE *fopen (const char *__restrict __filename, const char *__restrict __modes) ' Open a file and create a new stream for it. Private Extern fopen(__filename As String, __modes As String) As Pointer ' size_t fread(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ' Read chunks of generic data from STREAM. Private Extern fread(__ptr As Pointer, __size As Long, __n As Long, __stream As Pointer) As Long ' long int ftell (FILE *__stream) ' Return the current position of STREAM. Private Extern ftell(__stream As Pointer) As Long ' int fclose (FILE *__stream) ' Close STREAM. Private Extern fclose(__stream As Pointer) As Integer Public Sub Main() Dim p, pr As Pointer Dim s As String Dim d, n, i As Integer s = "/percorso/del/file/da/leggere" d = Stat(s).Size pr = Alloc(SizeOf(gb.Byte), d) p = fopen(s, "r") Repeat fread(pr, SizeOf(gb.Byte), SizeOf(gb.Byte), p) Print "\e[0mPosizione del puntatore del file: \e[31m"; ftell(p), "\e[0m - Valore letto: \e[34m"; Hex(Byte@(pr), 2) Wait 0.3 Until ftell(p) == d ' Libera la memoria precedentemente allocata: fclose(p) Free(pr) ' Si assicura che il Puntatore non punti a un indirizzo rilevante di memoria: pr = 0 End