jeg er begyndt på at lave en søgemaskine der kan søge efter filer, men vis man bare skriver test og man vil finde test.ini kan den ikke det og man skal angive den rigtige sti forat den kan finde den.
procedure ShowForm;stdcall;external \'Project1dll.dll\' name \'ShowDllForm\'; function ShowFormModal:integer;stdcall;external \'Project1dll.dll\' name \'ShowDllFormModal\'; var Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); begin ShowFormModal; end;
procedure TForm1.Button3Click(Sender: TObject); var SR: TSearchRec; var E: Integer; var sl: tstringlist; var listboxt:TListBox; begin
ListBox1.Clear; sl := tstringlist.create; E := FindFirst(folder.Text + fileedit.Text, faAnyFile, SR); try while E=0 do begin ListBox1.Items.Add(sr.name); e := findnext(sr); end; finally findclose(sr); sl.free; end; end;
procedure TForm1.Timer1Timer(Sender: TObject); var ini:tinifile; begin ini := TIniFile.Create(\'c:\\indstillinger.ini\'); folder.Text := ini.ReadString (\'folder\',\'path\',\'\'); ini.Free; end;
procedure Register; begin RegisterComponents(\'Samples\', [TFindFile]); end;
constructor TFindFile.Create(AOwner: TComponent); begin inherited Create(AOwner); Path := IncludeTrailingBackslash(GetCurrentDir); FileMask := \'*.*\'; FileAttr := [ffaAnyFile]; s := TStringList.Create; end;
destructor TFindFile.Destroy; begin s.Free; inherited Destroy; end;
procedure TFindFile.SetPath(Value: string); begin if fPath <> Value then begin if Value <> \'\' then if DirectoryExists(Value) then fPath := IncludeTrailingBackslash(Value); end; end;
function TFindFile.SearchForFiles: TStringList; begin s.Clear; try FileSearch(Path); finally Result := s; end; end;
procedure TFindFile.FileSearch(const InPath : string); var Rec : TSearchRec; Attr : integer; begin Attr := 0; if ffaReadOnly in FileAttr then Attr := Attr + faReadOnly; if ffaHidden in FileAttr then Attr := Attr + faHidden; if ffaSysFile in FileAttr then Attr := Attr + faSysFile; if ffaVolumeID in FileAttr then Attr := Attr + faVolumeID; if ffaDirectory in FileAttr then Attr := Attr + faDirectory; if ffaArchive in FileAttr then Attr := Attr + faArchive; if ffaAnyFile in FileAttr then Attr := Attr + faAnyFile;
if SysUtils.FindFirst(inPath + FileMask, Attr, Rec) = 0 then try repeat s.Add(inPath + Rec.Name); until SysUtils.FindNext(Rec) <> 0; finally SysUtils.FindClose(Rec); end;
If not InSubFolders then Exit;
if SysUtils.FindFirst(inPath + \'*.*\', faDirectory, Rec) = 0 then try repeat if ((Rec.Attr and faDirectory) > 0) and (Rec.Name<>\'.\') and (Rec.Name<>\'..\') then begin FileSearch(IncludeTrailingBackslash(inPath + Rec.Name)); end; until SysUtils.FindNext(Rec) <> 0; finally SysUtils.FindClose(Rec); end; end;
Du gemmer overnævnte kode med navnet \"FindFile.pas\" Derefter går du ind i delphi, meuen -> Component -> Install Component -> Into New Package -> Åbner files som du lige gemte, og skriver \"_findfile\" i package filename.
og så ok. Ny har den bygget componentet, og det skal nu bare installeres ved at klike \"Install\" i den lille dialog som er kommet frem.
Efter alt dette kopier du FindFile.pas til mappen: Delpi\\LIB\\
Nu er den installeret, jeg tror at du kan finde componenten under sample.
Hvis du ikke vil bruge komponenter kar jeg skrevet en klasse der kan det sammen .. Den finder du på http://borrisholt.com
Jens B
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.