[delphi] Problem z pętlą, xml

0

Mapisałem taki kod który pobiera nazwy plików w folderze i za pomocą pętli dodaje tyle childów <record> ile jest plików i w childach jako atrybut "to" wstawia nazwe pliku bez rozszerzenia. Np.:

<record from="liczba" to="plik1"/>
<record from="liczba" to="plik2"/>
<record from="liczba" to="plik3"/>

O to problem:
Nie wiem jak zrobić tak, żeby atrybut "from" równał się liczbie porządkowej czyli każdy następny dodany child przez pętle miał liczbe w "from" o jeden większą.

Super by było gdyby jeszcze po ponownym uruchomieniu całej procedury program sprawdzil "liczbe" w from w ostatnim childzie <record> i dodawał następne z childy record z liczbą większą o 1 od owego ostatniego childa <record>.

procedure TForm1.Button3Click(Sender: TObject);
var
SR : TSearchRec;
Fik, stopka, il,i,x,cx,ist : integer;
nazwa,lang : string;
begin

 Fik := FindFirst( 'C:\xml\a' + '/*.txt', faArchive, SR);
 while (Fik = 0) do
  begin
    nazwa := sr.name;
    for il :=1 to length (nazwa) do
     if nazwa[il] = '.' then stopka := il;
    Delete (nazwa, stopka, length(nazwa) - stopka + 1);


XML.Active := True;
XML.LoadFromFile('C:\xml\config.xml');

with XML.DocumentElement.ChildNodes['list'].addchild('record') do

begin

attributes['from']:= (); //tu musi byc zapetlony integer
attributes['to']:= ('nazwa');
Fik := FindNext(SR);

end;

XML.Active := False;

end;
end;
0

Ja bym to zrobił tak:

procedure TForm1.Button1Click(Sender: TObject);
var
  SR : TSearchRec;
  Fik, stopka, il,i : integer;
  nazwa,lang : string;
  licznik: integer;
begin
  Fik := FindFirst( 'C:\xml\a' + '/*.txt', faArchive, SR);
  XML.LoadFromFile('C:\xml\config.xml');

  licznik := XML.DocumentElement.ChildNodes['list'].ChildNodes.Count + 1;

  while (Fik = 0) do begin
    nazwa := sr.name;
    for il :=1 to length (nazwa) do
      if nazwa[il] = '.' then begin
        stopka := il;
        break;
      end;
    Delete (nazwa, stopka, length(nazwa) - stopka + 1);

    with XML.DocumentElement.ChildNodes['list'].addchild('record') do begin
      attributes['from']:= licznik;
      attributes['to']:= nazwa;
    end;
    Fik := FindNext(SR);
    Inc(licznik);
  end;
  FindClose(sr);

  XML.SaveToFile('C:\xml\nowy.xml');
  XML.Active := False;
end;

Jeśli dobrze zrozumiałem o co Ci chodziło... ;)

0

Dokladnie o to mi chodzilo :*

1 użytkowników online, w tym zalogowanych: 0, gości: 1