Thema: Delphi XML sortieren

Einzelnen Beitrag anzeigen

Benutzerbild von Lee500
Lee500

Registriert seit: 18. Sep 2006
39 Beiträge
 
Delphi 2010 Architect
 
#8

Re: XML sortieren

  Alt 29. Jun 2008, 16:27
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
  Mit Zitat antworten Zitat