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