Jump to content

[Delphi]Drzewo na dysk


sazian

Recommended Posts

Chciałbym napisać program coś jak eksplorator tylko z tą różnicą żeby można było sobie zapisać na dysku całe to drzewo z wszystkimi plikami i folderami, które się na danym dysku znajdują
Jeśli ktoś wie jak się robi coś takiego to proszę o pomoc
Link to comment
Share on other sites

Metoda sprawdzania wszystkich plikow/katalogow jest opisana przy FindFirst i TSearchRect w helpie (sa tam przyklady).
Dane odczytane za pomoca tamtych procek mozesz przechowywac w postaci listy lub lepiej stworzyc sobie drzewo w pamieci, a nastepnie zapisac je najlepiej w postaci XML do pliku.
przykladowa pseudo struktora danych w pamieci moze byc taka

[delphi][/delphi]

podczas odczytu katalogow na np.: C: tworzysz sobie obiekt TKatalog ustawiasz jego name na sciezke ktora wlasnie badasz do fFiles dodajesz wszystkie pliki w tym katalogu, a do fDirectories dorzucasz wszystkie znalezione katalogi. Pozniej rekurencyjnie wywolujesz kazdy katalog z fDirectories i robisz z nim to samo co z c:.

W efekcie dostaniesz drzewo. Teraz wystarczy napisac procke zgrywajaca zawartosc TKatalog do pliku i wywolac je rekurencyjnie dla wszystkich obiektow TKatalog.

Kodu nie zamieszczam bo mam dzisiaj strasznego lenia [b]pozatym jak posiedzisz to dasz rade :)

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link to comment
Share on other sites

Sazian
zdaje sie ze cos w tym deseniu komus juz radziles.. Pozwolisz e zacytuję
[quote] [Delphi] Sprawdzanie istnienia folderu, lista plików ... [/quote]
i tak dalej
Inym rozwiazaniem moze byc skorzystanie z komponentow zakladki Win 3.1
a) TDirectoryListBox;
cool.gif TDriveComboBox;
c) TFileListBox;
oraz na przyklad z TTreeView, do ktorego laduje odpowiednio zawartosci list z komponetow wyzej wymienionych (mozna powiedziec ze przypomina to rozwiazanie proponowane przez Tostera).. Potem zapisujesz to do pliku.. Ale po co Ci to to nie wiem: Wszak zawartosc kazdego katalogu jest zmienna.. Nie ma wiec sensu przechowaywac takiej zawartosci... jesli piszesz wlasny instalator to tez takie rozwiazanie odpada...
PS
Jesli mozna wiedziec po co Ci takie rozwiazanie:

pozdrawiam oksal

Link to comment
Share on other sites

chce zrobić liste plików na c po instalacji żeby sprawdzać jakiś czas później czy dany plik może być wirusem.

wiem jak stwożyć liste plików z danego folderu ale ja chce przeskanować cały c łącznie z podfolderami.
[b]kożystam z tej funkcji do "skanowania" bieżącego katalogu

[code=Delphi] function LoadHill(pos:string):string;
var SR:TSearchRec;
[[YBY[BB[Q[
ĘĘP[fĆR5\"&W7VCŁrsG'vĆRfVćCÓF4(ĄMH9ąŃĄ4(ĄM.Attr <> faDirectory) then
result:=result+SR.NamJLBY]HQXH[B[B5\"ćRrfCD\"fwCr3VćCfVćCŁ9ĄMH4(4(4(ąą
ąĄMH4(ą:=result+'-';
end;
end; [/code]
Link to comment
Share on other sites

dorwałem pewną procedure biggrin.gif tylko jak to działa
[code=Delphi]
type
public
procedure ZnajdzPlik(Sciezka,NazwaPliku[ĘNB[BBYHLKZZĘY^K^ĆS7G&ćrf e6V&6&V2E6V&6&V3E6V&6&V3IąŃ4(4(ŃŃŃ9ĄMŃng):String;
begin
if Dir[Length(Dir)]<>'' then
[YB[CB[QB[BB[F4F$ćFFF$ćS7G&ćr&ĆVŚ&Vv&W7VĄ9Ą94)4(4)4(Ma:=GetDirectoryName(Sciezka);
FindResult:=FindFirst(SciezJÓ^TZKP[Q[JRY[TŃ[JTXYKX&V2G'vĆRfćE&W7VBF&VvVóĆĄMĄI94(Ią9ĄMrchRec);
end;

FindResult:=FindFirst(Sciezka+'*.*',faXKXXĘNB[H[[LBY[BbE6V&6&V2GG\"ćBfF&V7F'fF&V7F'ćBćB9=ŃŃĄMĄI9ŃĄ4(iAąŹĄMMrchRec.Name,NazwaPliku);
& nbsp;FindResult:=FindNext(DSearchRecNB[B[[CB[JXXĘNB[B[
&6VGW&RDf&Ó'WGF6Ć66VćFW#D&ŚV7BŚ&VviAąŹ4) [/code]
może mi ktos wytłumaczyć jak to działa :oops:
bo to nie chce mi skanować wszystkich folderów a dokładniej tych od profili użytkowników znaczy głuwne foldery skanuje ale tych podfolderów już nie rusza :?: i co tu jest grane

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...