Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 180
  • Last Modified:

Search for a file (component or API function)

I need a component or API function that can search for a file on local hard drives. I know how to do this non-visually, but I want the Win95/98 animated search icon to appear as the file is being searched for.
Any help appreciated.
0
friberg
Asked:
friberg
  • 2
  • 2
1 Solution
 
williams2Commented:
This is what you do:

The following example demonstrates using DDE to execute Explorer's
find file dialog. The example opens the dialog in the Directory
"C:\Download".


procedure TForm1.Button1Click(Sender: TObject);
begin
  with TDDEClientConv.Create(Self) do begin
    ConnectMode := ddeManual;
    ServiceApplication := 'explorer.exe';
    SetLink( 'Folders', 'AppProperties');
    OpenLink;
    ExecuteMacro('[FindFolder(, C:\DOWNLOAD)]', False);
    CloseLink;
    Free;
  end;
end;

0
 
fribergAuthor Commented:
Thanks, but I need to catch the complete path of the file in the application, so that I can store it in a string and use it in the code. And I also need to specify (in the application) which file to search for.
0
 
dwwangCommented:
>>"I know how to do this non-visually"

So it's easy enough, all you need is to put the TAnimate component on your form, select the commonAvi property, set it to aviFindFile.
When you starting to search, set Animate1.active:=true;

Regards,
Wang
0
 
williams2Commented:
Hmmm.. Your question is somehow a bit easy to misunderstand! this is the only API call doing this.

The animated cursor thing just shows you what's is beeing done while it, but if you want it showing while searching, do like Wang shows you to a Form2 while you can set it up as a dialog form showing at screen center.

Then this works perfectly:

procedure FindFilesInDir(var List: TStringList; Directory, SearchName: String);
var
 S: TSearchRec;
 I: Integer;
begin
  I := FindFirst(Directory+'\*.*',faAnyFile,S);
  While I=0 do
  Begin
    If (S.name<>'.') AND (S.Name<>'..') then
    Begin
      if pos(SearchName,S.Name)>0 then List.Add(Directory+'\'+S.Name);
      If (S.Attr AND faDirectory)>0 then
        FindFilesInDir(List,Directory+'\'+S.Name,SearchName);
    End;
    I:= FindNext(S);
  End;
  FindClose(S);
End;

procedure TForm1.Button1Click(Sender: TObject);
var
  List: TStringList;
begin
  List:= TStringList.Create;
  Form2.Show;
  Form2.Animate1.Active:= True;
  FindFilesInDir(List,'C:','.zip');
  Memo1.Lines.AddStrings(List);
  List.free;
  Form2.Animate1.Active:= False;
  Form2.Close;
end;
0
 
fribergAuthor Commented:
Thanks, I'll try that.

0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now