Cita:
Empezado por LoPiTaL
Hola, roman. ¿Realmente funcionaría este código? Si alguno de los campos en a tiene como valor $00 (caracter final de string), entonces no podrías recuperar lo que vaya después, perdiendo parte de la estructura...
|
Sí que puedes. Recuerda, un
string, pese a lo que normalmente entendemos por él (una secuencia de caracteres alfanuméricos), en realidad puede almacenar cualquier secuencia de bytes, incluido el cero. El detalle aquí es cómo recuperas la información. Si utilizas un
string para almacenar caracteres no alfanuméricos, no puedes esperar usar dicho
string en contextos alfanuméricos, por ejemplo, en un ShowMessage.
Haz esta prueba (con la declaración que yo puse del SafeArray):
Código Delphi
[-]
var
a, b: TSafeArray;
s: String;
begin
a.cDims := 84;
a.fFeatures := 3254;
a.cbElements := 0;
a.cLocks := 6;
SetLength(s, SizeOf(a));
Move(a, s[1], SizeOf(a));
ZeroMemory(@b, SizeOf(b));
Move(s[1], b, SizeOf(b));
end;
b debe contener una copia exacta de a.
// Saludos