ved ikke hvordan det gøres med Delphi, men du kan i dos lave en dir >liste.txt så får du en tekstfil med en liste over filer over det bibliotek du står i
Du skal bruge en dynamisk data struktur til at gemme navnene i. Hvis du selv vil lave den så lav f.eks. en dobbelt linket liste. Men sandsyneligvis har Delphi noget færdigt til det. 100000 filer af 50 tegn er kun 5 MB og det er jo ikke meget på dagens computere. Så finder du alle filer i et directpry, tilføjer dem til listen og kalder rekursivt på ale directories.
Jeg køre en procedure. Som søge i en mappe... alle filer lægges ind i en liste. Så Kalder jeg proceduren igen... til sidste så har jeg jo et par 100 lister =?
type ptronefile = ^onefile; onefile = record next : ptronefile; prev : ptronefile; name : string; end;
procedure addfile(name : string; var first,last : ptronefile);
var tmp : ptronefile;
begin if first = nil then begin new(first); tmp := nil; last := first; end else begin new(last^.next); tmp := last; last := last^.next; end; last^.next := nil; last^.prev := tmp; last^.name := name; end;
procedure printfiles(first : ptronefile);
var curr : ptronefile;
begin curr := first; while curr <> nil do begin writeln(curr^.name); curr := curr^.next; end; end;
procedure dirlistrec(dirspec : string; var first,last : ptronefile);
var sr : TSearchRec;
begin if FindFirst(dirspec + '*.*', faAnyFile, sr) = 0 then begin if (sr.Attr and faDirectory) <> 0 then begin if (sr.Name <> '.') and (sr.Name <> '..') then begin dirlistrec(dirspec + sr.Name + '\', first, last); end; end else begin addfile(dirspec + sr.Name, first, last); end; while FindNext(sr) = 0 do begin if (sr.Attr and faDirectory) <> 0 then begin if (sr.Name <> '.') and (sr.Name <> '..') then begin dirlistrec(dirspec + sr.Name + '\', first, last); end; end else begin addfile(dirspec + sr.Name, first, last); end; end; FindClose(sr); end; end;
var first,last : ptronefile;
begin first := nil; last := nil; dirlistrec('C:\zzz\', first, last); printfiles(first); end.
Alternativt kunne man bruge en memtable -eks. KbmMemTable
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.