Einzelnen Beitrag anzeigen

schlock

Registriert seit: 3. Sep 2004
20 Beiträge
 
#5

Re: Hat jemand Erfahrung mit Delphi und XML Dateien erzeugen

  Alt 7. Okt 2004, 10:49
Nehmen wir an Du hast eine Tabelle mit den Spalten
ID (Integer), Status (String), Created (TDateTime) und Volume (Real)
Das musst Du erst mal dem ClientDataSet sagen:
Delphi-Quellcode:
var
  ClientDataSet: TClientDataSet;
begin
  ClientDataSet:= TClientDataSet.Create(NIL);

  // Felder definieren
  ClientDataSet.FieldDefs.Add('ID', ftInteger, 0, FALSE);
  ClientDataSet.FieldDefs.Add('Status', ftString, 15, FALSE);
  ClientDataSet.FieldDefs.Add('Created', ftDate, 0, FALSE);
  ClientDataSet.FieldDefs.Add('Volume', ftFloat, 0, FALSE);

  // Dataset aktvieren
  ClientDataSet.CreateDataset;
  ClientDataSet.Open;
Nun ist das ClientDataSet quasi bereit (strukturiert) Daten aufzunehmen:

Delphi-Quellcode:
  ClientDataSet.Append;
  ClientDataSet.FieldByName('ID').AsInteger := 1;
  ClientDataSet.FieldByName('Status').AsString := 'Mein Status';
  ClientDataSet.FieldByName('Created').AsDateTime := Date(); // Heute
  ClientDataSet.FieldByName('Volume').AsFloat := 9.345;
  ClientDataSet.Post;
Hast Du alle Daten eingepflegt kannst Du alles speichern:

Delphi-Quellcode:
  ClientDataSet.SaveToFile('D:\TestXmlDataSet.xml', dfXMLUTF8);
// oder ClientDataSet.SaveToFile('D:\TestXmlDataSet.xml');
Wenn Du Dir die erzeugte Datei anschaust wirst Du feststellen, dass es sich dabei um eine XML-Datei handelt.
Lesen geht dann auch ganz einfach:
Delphi-Quellcode:
var
  myInt: Integer;
  myDate: TDateTime;
  myString: string;
  myFloat: Currency;

  ClientDataSet.LoadFromFile('D:\TestXmlDataSet.xml');
  
  ClientDataSet.First;
  while not ClientDataSet.EOF do
  begin
    myInt:= ClientDataSet.FieldByName('Id').AsInteger;
    myDate:= ClientDataSet.FieldByName('Status').AsString;
    myString:= ClientDataSet.FieldByName('Created').AsDateTime;
    myFloat:= ClientDataSet.FieldByName('Volume').AsFloat;
    ClientDataSet.Next;
  end;
  Mit Zitat antworten Zitat