Ver Mensaje Individual
  #4  
Antiguo 29-03-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues entonces pide que te expliquen exactamente qué es lo que desean.

Mira, es cierto que un string puede almacenar cualquier secuencia de bytes y no sólo caracteres, así que en ese sentido puede guardar "cualquier" cosa. Pero la estructura que mencionas tiene un apuntador (pvData), lo cual no tiene sentido guardar pues es una dirección de memoria que cambia en cada ejecución. También tiene el campo rgsabound que, por la forma en que está declarado, suele apuntar a arreglos de longitud variable y habría que ver qué hay en cada arreglo.

Dicho esto, vamos a suponer que TSafeArray estuviera declarado así:

Código Delphi [-]
TSafeArray = record
  cDims: Word;
  fFeatures: Word;
  cbElements: Longint;
  cLocks: Longint;
end;

es decir, sin los elementos conflictivos.

Una forma de pasar el contenido de un SafeArray a un String podría ser esta:

Código Delphi [-]
SetLength(s, SizeOf(a));
Move(a, s[1], SizeOf(a));

donde s es un String y a de tipo TSafeArray.

Para recuperar el valor guardado en un string a un SafeArray harías lo contrario:

Código Delphi [-]
Move(s[1], a, SizeOf(a));

// Saludos
Responder Con Cita