Ver Mensaje Individual
  #1  
Antiguo 28-03-2013
Avatar de kotai
kotai kotai is offline
Miembro
 
Registrado: mar 2004
Ubicación: Gandia
Posts: 31
Reputación: 0
kotai Va por buen camino
Clonar un array que viene desde un puntero

Hola.
Tengo un puntero a un array y quiero hacer una copia de ese array, pero no consigo saber como hacerlo.
Os pongo el ejemplo:

Código:
  PKeyStateArr = ^TKeyStateArr;
  TKeyStateArr = array[0..65000] of UInt8;

var
    Teclado : PKeyStateArr;
    TecladoAntes : TKeyStateArr;
begin
     // antes de actualizar el estado de las teclas 
     // hacemos una copia de como estaba antes el teclado
 
     // ESTO ES LO QUE NO SE COMO HACER, 
     // PONGO VARIOS EJEMPLOS QUE NO FUNCIONAN
     // Teclado YA VIENE CON UN VALOR INICIALIZADO 
     TecladoAntes := Teclado^;
     TecladoAntes := Copy(TKeyStateArr(Teclado), 1, Length(TKeyStateArr));
     TecladoAntes := PKeyStateArr(Teclado)^;

     // actualizamos el array con las teclas pulsadas
     Teclado := PKeyStateArr(SDL_GetKeyState(nil));
La explicación es sencilla, con SDL_GetKeyState(nil) obtenemos un puntero a un array que dice el estado de todas las teclas y yo quiero hacer una copia de ese estado para luego poder comprobar si la tecla se acaba de pulsar o ya estaba pulsada.
si Teclado y TecladoAntes los hago de tipo PKeyStateArr y hago una asignación TecladoAntes := Teclado no me sirve porque cuando actualizo el Teclado también se actualiza TecladoAntes

¿ Como puedo copiar el array sin tener que hacer un for i=1 to length(TKeyStateArr) : TecladoAntes[i] := Teclado[i] ?

Saludos.

Última edición por kotai fecha: 28-03-2013 a las 13:14:38.
Responder Con Cita