04. juni 2002 - 00:36Der er
8 kommentarer og 4 løsninger
Fil liste
Jeg skal have lavet en liste over bestemte (f.eks *.txt) filer der ligger i f.eks "c:\test" plus under biblioteker. Jeg skal bare hae fil navnene og ikke stierne...
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
lav en løkke der tjekker for undermapper! Til det kan du eventuelt bruge en TDirectoryListBox... Vær sikker på at din TFileListBox og din TDirectoryListBox altid har samme sti, så skriv følgende i din TDirectoryListBox's OnChange event:
procedure TForm1.DirectoryListBox1Change(Sender: TObject); var i : integer; s : string; begin FileListBox1.Directory := DirectoryListBox1.Directory; Caption := 'RodMappe : '+DirectoryListBox1.Items[DirectoryListBox1.ItemIndex]; if DirectoryListBox1.ItemIndex < DirectoryListBox1.Items.Count then begin s := ''; for i := 0 to DirectoryListBox1.Items.Count-DirectoryListBox1.ItemIndex-1 do if i > 0 then s := s+DirectoryListBox1.Items[DirectoryListBox1.ItemIndex+i]+', '; Caption := Caption+' UnderMapper: '+s end; end;
I koden viser den, RodMappen (den mappe du er befinder dig i) og dernæst alle undermapper der tilhøre rodmappen, i din form's caption...
Lav en form og sæt en listbox,edit,directorylistbox,drivecombobox og en checkbox på formen.
Tilføj følgende til button1click
procedure TForm1.Button1Click(Sender: TObject); var path : string; Taeller,Taeller2 : integer; Liste : Tstrings; TooMany : boolean; begin screen.cursor := crHourglass; caption := 'Checking'; form1.update; Liste := Tstringlist.create; ListBox1.Items.Clear; TooMany := false; Taeller := 0; Taeller2 := 0; if Length(DirectoryListBox1.Directory) = 3 then Liste.add(copy(DirectoryListBox1.Directory,1,2)) else Liste.add(DirectoryListBox1.Directory); repeat FindFirst(Liste.strings[Taeller]+'\*.*',FaDirectory,SR); while findnext(sr) = 0 do begin if (sr.name <> '..') and (sr.name <> '.') then if SR.Attr and faDirectory = faDirectory then Liste.add(Liste.strings[Taeller]+'\'+Sr.name); end; inc(taeller); until Taeller > Liste.count-1; for taeller := 0 to Liste.Count-1 do begin FindFirst(Liste.Strings[TAeller]+'\'+edit1.text,faAnyFile,SR); repeat caption := 'Checking directory: ' + inttostr(taeller+1) + '/' + inttostr(liste.count); form1.update; if sr.attr and faDirectory <> faDirectory then begin if checkbox1.checked then sr.name := Liste.strings[taeller]+'\'+sr.name; if ListBox1.Items.count < 32736 then ListBox1.Items.Add(sr.name) else TooMany := true; inc(Taeller2); end; until findnext(sr) <> 0; end; Liste.free; Caption := Caption + ' - ' + inttostr(Taeller2) + ' matches found'; if TooMany then Caption := Caption + ' - only 32736 matches shown...'; screen.cursor := crDefault; end;
Det er måske nok en overdrevet version men så kan du jo bare fjerne noget af det.
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.