Hi,
hab mir das selbst mal angeguckt und das so gelöst:
Delphi-Quellcode:
procedure TForm1.FillArray(klasse: string);
var EList,EList2: IXMLNodeList;
I,J,K: Integer;
begin
SetLength(Runs,0);
J := 0;
EList := XPathSelect(XMLDoc.DocumentElement, '/runs/run');
if EList.Length > 0 then
begin
for I:=0 to EList.Length-1 do
begin
EList2 := XPathSelect(Drivers.DocumentElement, '/drivers/driver[@startnr="'+EList.Item[I].Attributes.GetNamedItem('startnr').NodeValue+'"]');
if EList2.Length > 0 then
begin
if EList2.Item[0].Attributes.GetNamedItem('class').NodeValue = klasse then
begin
Inc(J);
SetLength(Runs,J);
Runs[J-1].startnr := StrToInt(EList.Item[I].Attributes.GetNameditem('startnr').NodeValue);
Runs[J-1].sumtime := StrToFloat(EList.Item[I].Attributes.GetNamedItem('sumtime').NodeValue);
EList2 := XPathSelect(XMLDoc.DocumentElement, '/runs/run[@startnr="'+EList.Item[I].Attributes.GetNamedItem('startnr').NodeValue+'"]/round');
for K := 0 to EList2.Length - 1 do
begin
SetLength(Runs[J-1].times,K+1);
Runs[J-1].times[K].time := StrToFloat(EList2.Item[K].Attributes.GetNamedItem('time').NodeValue);
Runs[J-1].times[K].course := StrToInt(EList2.Item[K].Attributes.GetNamedItem('course').NodeValue);
end;
end else
end;
end;
end;
end;
Das sortieren mache ich mit ShellSort, allerdings sortiert er den letzten Datensatz seltsamerweise nicht mit:
ShellSort Problem
Gruß Lee500