Hallo Ati,
ich würde es so machen:
Delphi-Quellcode:
procedure AddNames(
csv: TStrings; fields: TFields);
var
i: Integer;
begin
with TStringList.Create
do
begin
for i := 0
to Pred(fields.Count)
do
Add(fields[i].FieldName);
csv.Add(CommaText);
Free;
end;
end;
procedure AddValues(
csv: TStrings; fields: TFields);
var
i: Integer;
begin
with TStringList.Create
do
begin
for i := 0
to Pred(fields.Count)
do
Add(fields[i].AsString);
csv.Add(CommaText);
Free;
end;
end;
procedure SaveToCsv(ds: TDataSet; fn: TFileName);
var
csv: TStringList;
bm: TBookmark;
begin
csv := TStringList.Create;
ds.DisableControls;
bm := ds.GetBookmark;
try
AddNames(
csv, ds.Fields);
ds.First;
while not ds.Eof
do
begin
AddValues(
csv, ds.Fields);
ds.Next;
end;
csv.SaveToFile(fn);
finally
csv.Free;
ds.GotoBookmark(bm);
ds.FreeBookmark(bm);
ds.EnableControls;
end;
end;
Dieser Ansatz berücksichtigt das Vorkommen von Quote in den Daten selbst und verdoppelt solche Quotes. Keine Ahnung, ob du das mit Lazarus übersetzen kannst, aber vielleicht hilft es dir ja trotzdem.
Grüße vom marabu