Okay... Vi starter forfra... Du vil udpege en tilfældig mappe på en computer...
Smut ind på
www.pythia.dk tryk på "Komponenter m.m." og vælg i højre side den der hedder "FileSearch"... Installer den, smæk en Edit, en knap og en FileSearch ind på din form og kør følgende kode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
FileSearch, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
FileSearch1: TFileSearch;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
MineMapper: TStringList;
procedure DerErFundetEnMappe(Sender: TObject; Directory: String);
procedure SoegningenErSlut(Sender: TObject; Breaked: Boolean);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Enabled := False; //Vi skal ikke kunne starte en søgning når vi allerede søger
Caption := 'Søger...'; //Fortæller brugeren at vi søger
FileSearch1.Recursiv := True; //Gør at den søger i undermapper
FileSearch1.Filter := '*.*'; //Søger efter ALLE filer
FileSearch1.Root := 'C:\'; //Vi starter søgningen fra C-drevet
FileSearch1.OnDirectoryFound := DerErFundetEnMappe; //Sætter proceduren der
//skal køres når vi har fundet en mappe
FileSearch1.OnFinish := SoegningenErSlut; //Sætter proceduren der skal køres
//når søgningen er slut
FileSearch1.Execute; //Start søgningen
end;
procedure TForm1.DerErFundetEnMappe(Sender: TObject; Directory: String);
begin
MineMapper.Add(Directory); //Nu er der fundet en mappe, så smider vi den bare
//ind i vores StringList, så vi senere kan se hvilke der er et vælge i mellem
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;//Gør at vi senere kan udvælge en tilfældig mappe i vores StringList
MineMapper := TStringList.Create; //Opretter den StringList som de fundne
//mapper skal gemmes i
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MineMapper.Free; //Fjerner StringList'en fra hukommelsen
end;
procedure TForm1.SoegningenErSlut(Sender: TObject; Breaked: Boolean);
begin
Edit1.Text := MineMapper.Strings[Random(MineMapper.Count)]; //Uvdælger en
//tilfældig mappe fra StringList'en
Caption := 'Færdig!'; //Fortæller brugeren at søgningen er færdig
Button1.Enabled := True; //Så kan vi trykke på Søg-knappen igen
end;
end.
Jeg har lige kørt programmet i gennem og her virker det fint!!!