Sinceramente no me gusta para nada la idea de guardar registros dentro de campos long, pero si no hay otra, podrías utilizar un record de este tipo:
Código:
TRegCostos = record
CodeCompra : String[50];
VImpuesto1 ,
VImpuesto2 : Boolean;
CostoActualEx ,
CostoPromedioBs ,
CostoPromedioEx ,
Precios : Array[1..6] of Currency;
end;
TDatos = record
case Integer of
0: (RegCostos: TRegCostos);
1: (Data: array[0..247] of char);
end;
y te evitarías mover datos de un record a un string/pchar...
Código:
var
MisDatos: TDatos;
begin
MisDatos.RegCostos.CodeCompra := 'delphi.com.ar';
MisDatos.RegCostos.Precios[1] := 1.2;
Field.AsString :=MisDatos.Data;
Saludos!