Differenze tra le versioni di "Memcpy ()"

Da Gambas-it.org - Wikipedia.
Riga 9: Riga 9:
  
  
Semplice esempio di uso in Gambas:
+
===Semplice esempio di uso in Gambas con un valore numerico di tipo ''Intero''===
  <FONT color=Gray>' ''wchar_t * memcpy(wchar_t * dest, Const wchar_t * src, size_t count)''</font>
+
  <FONT color=Gray>' ''void *'''memcpy'''(void *str1, const void *str2, size_t n)''</font>
  '''Private''' <FONT color=#B22222>Extern memcpy</font>(dest As Pointer, src As Pointer, count As Integer) As Pointer In "<FONT color=#B22222>libc:6</font>"
+
  '''Private''' <FONT color=#B22222>Extern memcpy</font>(dest As Pointer, src As Pointer, count As Integer) In "<FONT color=#B22222>libc:6</font>"
 
   
 
   
  '''Public''' Sub Form_Open()
+
  '''Public''' Sub Main()
 
   
 
   
 
   Dim a, b As Pointer
 
   Dim a, b As Pointer
 
   Dim num As Integer
 
   Dim num As Integer
 
    
 
    
    a = Alloc(SizeOf(gb.Integer))
 
    b = Alloc(SizeOf(gb.Integer))
 
 
    
 
    
    num = 999
+
  num = 999
 +
 +
  a = VarPtr(num)
 +
  b = Alloc(SizeOf(gb.Integer))
 
    
 
    
    a = VarPtr(num)
 
 
    
 
    
      <FONT color=#B22222>memcpy</font>(b, a, SizeOf(gb.Integer))
+
    <FONT color=#B22222>memcpy</font>(b, a, SizeOf(gb.Integer))
 
    
 
    
 
   Print Int@(b)
 
   Print Int@(b)
 +
 +
  Free(b)
 +
 +
'''End'''
 +
 +
 +
===Semplice esempio di uso in Gambas con un valore di tipo ''Stringa''===
 +
<FONT color=Gray>' ''void *'''memcpy'''(void *str1, const void *str2, size_t n)''</font>
 +
'''Private''' <FONT color=#B22222>Extern memcpy</font>(dest As Pointer, src As Pointer, count As Integer) In "<FONT color=#B22222>libc:6</font>"
 +
 +
 +
'''Public''' Sub Main()
 +
 +
  Dim src, dest As Pointer
 +
  Dim s As String = "Questa è una prova con la funzione 'memcpy()'."
 +
 +
 +
  src = Alloc(s)
 +
  dest = Alloc(Len(s))
 +
   
 +
    <FONT color=#B22222>memcpy</font>(dest, src, Len(s))
 +
   
 +
  Print "Dopo memcpy, " & Quote("dest") & ":\n"; String@(dest)
 +
 +
  Free(src)
 +
  Free(dest)
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione delle 18:48, 10 mar 2014

La funzione della libreria di C

void *memcpy(void *str1, const void *str2, size_t n)

copia n caratteri da un'area di memoria str2 ad un'altra area di memoria str1.


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 memcpy(dest As Pointer, src As Pointer, count As Integer) As Pointer In "libc:6"


Semplice esempio di uso in Gambas con un valore numerico di tipo Intero

' void *memcpy(void *str1, const void *str2, size_t n)
Private Extern memcpy(dest As Pointer, src As Pointer, count As Integer) In "libc:6"

Public Sub Main()

 Dim a, b As Pointer
 Dim num As Integer
 
 
  num = 999

  a = VarPtr(num)
  b = Alloc(SizeOf(gb.Integer))
 
 
   memcpy(b, a, SizeOf(gb.Integer))
  
  Print Int@(b)

  Free(b)

End


Semplice esempio di uso in Gambas con un valore di tipo Stringa

' void *memcpy(void *str1, const void *str2, size_t n)
Private Extern memcpy(dest As Pointer, src As Pointer, count As Integer) In "libc:6"


Public Sub Main()

 Dim src, dest As Pointer
 Dim s As String = "Questa è una prova con la funzione 'memcpy()'."


  src = Alloc(s)
  dest = Alloc(Len(s))
   
   memcpy(dest, src, Len(s))
   
  Print "Dopo memcpy, " & Quote("dest") & ":\n"; String@(dest)

  Free(src)
  Free(dest)

End