Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Spaltenname mit in einer CSV-Datei speichern

  Alt 17. Jul 2006, 12:51
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
  Mit Zitat antworten Zitat