I has worked in a better code to do this:
procedure TForm1.Button1Click(Sender: TObject);
begin
CreateCSVFile('C:\test.csv');
end;
procedure TForm1.CreateCSVFile(NomeArquivo: String);
const
Delim = ';'; // change this if necessary
var
S: String;
I: Integer;
Stream: TFileStream;
begin
Stream := TFileStream.Create(NomeArquivo, fmCreate);
while not Sqlite3Dataset1.Eof do
begin
S := '';
for I := 0 to DBGrid1.Columns.Count - 1 do
S := S + '"' + StringReplace(TColumn(DBGrid1.Columns[I]).Field.AsString, '"', '""', []) + '"' + Delim;
S := S + LineEnding;
Stream.Write(PChar(S)^, Length(S));
Sqlite3Dataset1.Next();
end;
Stream.Free();
end;
Regards
Júnior