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ę.