[quote=Cecilio;331090Si de camino alquien quiere mejorar el código que he puesto mejor, así aprendo directamente de los maestros.
[/quote]
Hola cecilio, la diferencia entre el Assign y el igual ya te lo ha explicado el amigo coso. También puedes utilizar el procedimiento GetFieldNames que te devuelve la lista de campos de tu DataSet en el TString que le pases como parametro y para grabar en tu archivo puedes hacerlo direcatmente con SaveToFile de tu StringList.
Tu codigo quedaría así mas o menos
Código Delphi
[-]
procedure TForm1.Generico(tb: string);
var
s: string;
n,v: integer;
slCampos, slDatos: TstringList;
ibb: TIBquery;
begin
if not IBDatabase1.Connected then
begin
IBDatabase1.DatabaseName:=server.Text;
ibDatabase1.Connected:=true;
end;
ibb:= TibQuery.Create(nil);
ibb.Database:=Ibdatabase1;
ibb.Transaction:=IbTransaction1;
Ibb.SQL.Add('select * from '+tb);
ibb.Open;
slCampos :=TstringList.Create;
slDatos :=TstringList.Create;
Try
ibb.First;
ibb.Last;
Progressbar1.Max:=Ibb.RecordCount;
progressbar1.Position:=0;
ibb.GetFieldNames(slCampos);
s:='';
for v:=0 to slCampos.Count-1 do
s:=s+slCampos[v]+';';
slDatos.Add(s);
ibb.First;
n:=0;
while not ibb.Eof do
begin
s:='';
for v:=0 to ibb.FieldCount-1 do
s:=s+ibb.Fields.Fields[v].AsString+';';
slDatos.Add(s);
inc(n);
progressbar1.Position:=n;
ibb.Next;
end; slDatos.SaveToFile('C:\file.txt');
Finally
ibb.Close;
ibb.Free;
slCampos.Free;
slDatos.Free;
end;end;
Saluditos