El problema que veo con la solución propuesta es que en el archivo
binario a entregar al cliente no solo se debe incluir la información del Grid sino otros campos del formulario; no va a ser fácil desarrollar un "lector" que entienda toda esa información. Es por eso que propuse considerar un archivo de texto XML y no un archivo binario en el que se estaría guardando una estructura fija de tipo Record.
Aunque pensándolo un poco más quizas podría definirse una estructura de registro con parte variante, a la antigua, y seguir usando un archivo binario, por ejemplo:
Código Delphi
[-]
type
Tmis_datos = record
case EsGrid: boolean of
false: begin
Dato1: string[10]; Dato2: integer;
Dato3: double;
end;
true: begin
Col1: string[20];
Col2: string[3];
Col3: Currency;
Col4: strin[5];
end;
end;
end;
var
mis_datos: TMis_Datos;
En el código:
Código Delphi
[-]
begin
.
.
.
mis_datos.EsGrid := False;
Mis_datos.Dato1 := 'Prueba';
Mis_datos.Dato2 := 1;
Mis_datos.Dato3 := 7.2;
Write(ArchivoBinario, Mis_datos);
Grid.DataSource.DataSet.first;
While not Grid.DataSource.DataSet.Eof do
begin
Mis_Datos.EsGrid := True;
Mis_Datos.Col1 := Grid.DataSource.DataSet.Fields[0].Value;
Mis_Datos.Col2 := Grid.DataSource.DataSet.Fields[1].Value;
Mis_Datos.Col3 := Grid.DataSource.DataSet.Fields[2].Value;
Mis_Datos.Col4 := Grid.DataSource.DataSet.Fields[3].Value;
Write(Archivobinario, Mis_Datos);
Grid.DataSource.DataSet.Next;
end;
Bueno, la idea es esa. No tengo IDE a la mano para probarlo.