Katalogowanie

0

Próbuję pisać program do katalogowania danych. Mam jednak problem.

Potrzebuję jakiegoś algorytmu (niekoniecznie kodu) do zapisu drzewa katalogów do pliku i późniejszego odczytu.

Obecnie robię to tak:

procedure Kataloguj(tnRodzic : TTreeNode; strSciezka : string);
var
 iWynik : integer;
 tnDziecko : TTreeNode;
 Licznik : integer;
begin
  iWynik := FindFirst(strSciezka + '*.*', faAnyFile, sr);
  while iWynik = 0 do
  begin
    if (sr.Name <> '.') and (sr.Name <> '..') then
    begin
      tnDziecko := frm.trv.Items.AddChild(tnRodzic, sr.Name);
      Licznik := Licznik + 1;
      frm.Caption := 'Znalazlem : ' + IntToStr(Licznik) + 'plików.';

      if ((sr.Attr and faDirectory) = faDirectory) then
      begin
        tnRodzic.ImageIndex := 0;
        Kataloguj(tnDziecko, strSciezka + sr.Name + '');
      end
      else
      begin
        tnDziecko.ImageIndex := -1;
        tnDziecko.SelectedIndex := -1;
      end;
    end;
    iWynik := FindNext(sr);
  end;
  FindClose(sr);
end;


procedure Tfrm.btnClick(Sender: TObject);
var
  cDysk : Char;
begin
  frm.trv.Items.BeginUpdate;
  trv.Items.Clear;
  cDysk := 'F';
  Kataloguj(trv.Items.AddChild(nil, '(Dysk ' + cDysk + ':)'), cDysk + ':');
  frm.trv.Items.EndUpdate;
end;

Pliki i katalogi ładowane są do TreeView. Ten sposób nie odpowiada mi z kilku względów: drzewo jest nieposortowane (nie wiem, jak zrobić, aby katalogi były na górze), poza tym chciałbym zapisywać też rozmiar i inne info o pliku, tak by pliki wypisać później w ListView.

Bardzo proszę o podanie algorytmu, jakiegoś sposobu, pomysłu. Z kodem sobię jakoś poradzę.

0

Cześć! Sorki, nie zabardzo rozumiem Twojego pytania/prośby. Czy chcesz, żeby to było w SPACJA końcu na TreeView, czy ListView?

0

Rzeczywiście trochę namieszałem z tymi komponentami.

Po prostu chodzi mi o sposób zapisania drzewa katalogów, zeby moznabyło później je łatwo wczytać do TreeView, bądź listView

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