type
TDaten =
class(TObject)
ID : Cardinal;
Key, Value :
String;
end;
TDatenliste =
class(TObjectList)
protected
function getItem(
Index: Cardinal): TDaten;
virtual;
procedure setItem(
Index: Cardinal; Objekt: TDaten);
virtual;
public
function Add(Objekt: TDaten): Cardinal;
virtual;
function Remove(Objekt: TDaten): Cardinal;
virtual;
function IndexOf(Objekt: TDaten): Cardinal;
virtual;
procedure Insert(
Index: Cardinal; Objekt: TDaten);
virtual;
property Items[
index: Cardinal]: TDaten
read getItem
write setItem;
default;
end;
//...
function TDatenliste.getItem(
Index: Cardinal): TDaten;
begin
Result := TDaten(
inherited Items[
Index]);
end;
procedure TDatenliste.setItem(
Index: Cardinal; Objekt: TDaten);
begin
inherited Items[
Index] := Objekt;
end;
function TDatenliste.Add(Objekt: TDaten): Cardinal;
begin
Result :=
inherited Add(Objekt);
end;
function TDatenliste.IndexOf(Objekt: TDaten): Cardinal;
begin
Result :=
inherited IndexOf(Objekt);
end;
procedure TDatenliste.Insert(
Index: Cardinal; Objekt: TDaten);
begin
inherited Insert(
Index, Objekt);
end;
function TDatenliste.Remove(Objekt: TDaten): Cardinal;
begin
Result :=
inherited Remove(Objekt);
end;
//...
function TForm1.LeseDaten(Dateitext :
String) : TDatenliste;
var newEntry : TDaten;
tempDatenliste : TDatenliste;
i, j : Cardinal;
begin
XML := newXMLDocument;
XML.XML.Text := Dateitext;
XML.Active := True;
tempDatenliste := TDatenliste.Create;
for i := 0
to XML.DocumentElement.ChildNodes.Count - 1
do
begin
for j := 0
to XML.DocumentElement.ChildNodes[i].ChildNodes.Count - 1
do
begin
newEntry := TDaten.Create;
newEntry.ID := i;
newEntry.Key :=
XML.DocumentElement.ChildNodes[i].ChildNodes[j].NodeName;
newEntry.Value :=
XML.DocumentElement.ChildNodes[i].ChildNodes[j].NodeValue;
tempDatenliste.Add(newEntry);
end;
end;
result := tempDatenliste;
end;