Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





¿cómo Copiar Estructuras Extrañas En C#?

Iniciado por Haddd, 04 de Octubre de 2004, 10:36:38 AM

« anterior - próximo »

Haddd

 Bien, tengo este problema. Tengo la estructura siguiente:

struct p
{
Vector3 posicion;
Vector3 Normal;
};



Resulta que es posible que la estructura sea diferente porque depende del tipo de vértice, por ejemplo.

struct p
{
  Vector3 posicion;
  float u,v;
};



Por tanto, sé que SIEMPRE al principio tengo la posición, pero no sé lo que hay detrás.

Pues quiero copiar la posición de un array a otro. En C sería algo así:

[CODE]

void copiar(char *origen, char*destino,int tamañoorigen,int tamañodestino,int numelementos)
{
  for(int c=0;c      memcpy(destino,origen,3*4);// copio la posicion
     origen+=tamañoorigen;
     destino+=tamañodestino;
  }
}

¿Cómo puedo hacer esto en C#?


Warchief

 Sé que no era exactamente lo que querías, así que (a falta de mas conocimientos por mi parte  :( ) sólo puedo recomendar echar un vistazo a esta bonita unsafe clase de memoria:

http://www.csharpfriends.com/Spec/index.as...specID=25.8.htm

donde podemos encontrar:

Citar
class Test 

   static void Main() { 
      unsafe { 
         byte* buffer = (byte*)Memory.Alloc(256); 
         for (int i = 0; i < 256; i++) buffer = (byte)i; 
         byte[] array = new byte[256]; 
         fixed (byte* p = array) Memory.Copy(buffer, p, 256);
         Memory.Free(buffer); 
         for (int i = 0; i < 256; i++) Console.WriteLine(array); 
      } 
   } 


que usa


// Copies count bytes from src to dst. The source and destination  
  // blocks are permitted to overlap.  
  public static void Copy(void* src, void* dst, int count) {  
     byte* ps = (byte*)src;  
     byte* pd = (byte*)dst;  
     if (ps > pd) {  
        for (; count != 0; count--) *pd++ = *ps++;  
     }  
     else if (ps < pd) {  
        for (ps += count, pd += count; count != 0; count--) *--pd = *--  
        ps;  
     }  
  }  

Haddd

 ¡Esto puede funcionar!! (ole)

Muchísimas gracias (uoh)  

Warchief

Cita de: "Haddd"¡Esto puede funcionar!! (ole)

Muchísimas gracias (uoh)
Sí, por poder, puede, pero no me hago cargo de los resultados  :rolleyes:  






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.