procedure DataSetToStream(ADataSet: TDataSet; AStream: TStream);
var
i: Integer;
S: string;
begin
if not ADataSet.IsEmpty then
begin
ADataSet.EnableControls;
try
ADataSet.First;
repeat
S := '';
for i := 0 to ADataSet.Fields.Count -1 do
if ADataSet.Fields[i].Visible then
begin
if i > 0 then S := S + #9;
S := S + ADataSet.Fields[i].DisplayText;
end;
S := S + #13#10;
AStream.Write(S[1], Length(S));
ADataSet.Next;
until ADataSet.Eof;
finally
ADataSet.DisableControls;
end;
end;
end;
procedure DataSetToFile(ADataSet: TDataSet; AFileName: TFileName);
var
Stream: TStream;
begin
Stream := TFileStream.Create(AFileName, fmCreate);
try
DataSetToStream(ADataSet, Stream);
finally
Stream.Free;
end;
end;