Differenze tra le versioni di "Read ()"
Da Gambas-it.org - Wikipedia.
Riga 10: | Riga 10: | ||
Mostriamo un semplice esempio pratico, nel quale il programma leggerà quanto scritto nel Terminale dall'utente: | Mostriamo un semplice esempio pratico, nel quale il programma leggerà quanto scritto nel Terminale dall'utente: | ||
+ | Private const STDIN as integer = 0 | ||
Library "libc:6" | Library "libc:6" | ||
− | |||
− | |||
<FONT Color=gray>' ''ssize_t read (int __fd, void *__buf, size_t __nbytes)'' | <FONT Color=gray>' ''ssize_t read (int __fd, void *__buf, size_t __nbytes)'' | ||
Riga 23: | Riga 22: | ||
Dim bb As New Byte[16] | Dim bb As New Byte[16] | ||
− | <FONT color=#B22222>read_C</font>( | + | <FONT color=#B22222>read_C</font>(STDIN, bb.Data, 16) |
Print String@(bb.Data) | Print String@(bb.Data) |
Versione delle 18:28, 10 giu 2017
La funzione read( ), dichiarata nel file header "/usr/include/unistd.h"
ssize_t read (int __fd, void *__buf, size_t __nbytes)
legge da un file usando il suo file descriptor (1° parametro) un numero di byte definito nel suo 3° parametro, memorizzandoli nel buffer stabilito nel 2° parametro.
Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta. Da sottolineare che, poiché questa funzione esterna di C "read( )" è omonima alla funzione di Gambas "Read", bisognerà assegnarle un nome a piacere, ma si dovrà anche richiamare il suo vero nome con il comando Exec.
Dunque avremo ad esempio:
Private Extern read_C(_fd As Integer, __buf As Pointer, __nbytes As Long) As Long In "libc:6" Exec "read"
Mostriamo un semplice esempio pratico, nel quale il programma leggerà quanto scritto nel Terminale dall'utente:
Private const STDIN as integer = 0 Library "libc:6" ' ssize_t read (int __fd, void *__buf, size_t __nbytes) ' Read NBYTES into BUF from FD. Private Extern read_C(__fd As Integer, __buf As Pointer, __nbytes As Long) As Long Exec "read" Public Sub Main() Dim bb As New Byte[16] read_C(STDIN, bb.Data, 16) Print String@(bb.Data) End