Advertisement
miguelhosttimer

buscar dentro do celular arquivo

May 18th, 2024
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.28 KB | None | 0 0
  1.  unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  7.   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Memo.Types,
  8.   FMX.StdCtrls, FMX.Edit, FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo,
  9.   System.IOUtils;
  10.  
  11. type
  12.   TSearchThread = class(TThread)
  13.   private
  14.     FFileName: string;
  15.     FSearchPath: string;
  16.     FFoundPath: string;
  17.     FStatusText: string;
  18.     FDirectoriesSearched: Integer;
  19.     procedure UpdateUI;
  20.     procedure UpdateStatus;
  21.     function FindFile(const FileName, SearchPath: string): string;
  22.   protected
  23.     procedure Execute; override;
  24.   public
  25.     constructor Create(const FileName, SearchPath: string);
  26.   end;
  27.  
  28.   TForm1 = class(TForm)
  29.     Memo1: TMemo;
  30.     Label1: TLabel;
  31.     Edit1: TEdit;
  32.     Button1: TButton;
  33.     procedure Button1Click(Sender: TObject);
  34.     procedure FormCreate(Sender: TObject);
  35.     procedure FormDestroy(Sender: TObject);
  36.   private
  37.     FSearchThread: TSearchThread;
  38.     procedure SearchFiles(const StartDir, FileMask, SearchText: string);
  39.   public
  40.   end;
  41.  
  42. var
  43.   Form1: TForm1;
  44.  
  45. implementation
  46.  
  47. {$R *.fmx}
  48. {$R *.NmXhdpiPh.fmx ANDROID}
  49.  
  50. procedure TForm1.Button1Click(Sender: TObject);
  51. begin
  52.   Memo1.Lines.Clear;
  53.   FSearchThread := TSearchThread.Create(Edit1.Text, TPath.GetSharedDownloadsPath);
  54. end;
  55.  
  56. procedure TForm1.FormCreate(Sender: TObject);
  57. begin
  58.   // Código de inicialização vai aqui
  59. end;
  60.  
  61. procedure TForm1.FormDestroy(Sender: TObject);
  62. begin
  63.   // Código de limpeza vai aqui
  64. end;
  65.  
  66. procedure TForm1.SearchFiles(const StartDir, FileMask, SearchText: string);
  67. var
  68.   Files, Directories: TArray<string>;
  69.   Lines: TStringList;
  70.   i: Integer;
  71. begin
  72.   if TDirectory.Exists(StartDir) then
  73.   begin
  74.     Files := TDirectory.GetFiles(StartDir, FileMask);
  75.     for i := 0 to Length(Files) - 1 do
  76.     begin
  77.       Lines := TStringList.Create;
  78.       try
  79.         Lines.LoadFromFile(Files[i]);
  80.         if Lines.Text.Contains(SearchText) then
  81.         begin
  82.           Memo1.Lines.Add('Found in: ' + Files[i]);
  83.         end;
  84.       finally
  85.         Lines.Free;
  86.       end;
  87.     end;
  88.  
  89.     Directories := TDirectory.GetDirectories(StartDir);
  90.     for i := 0 to Length(Directories) - 1 do
  91.     begin
  92.       Label1.Text := 'Scanning: ' + Directories[i];
  93.       Application.ProcessMessages;
  94.       SearchFiles(Directories[i], FileMask, SearchText);
  95.     end;
  96.   end;
  97. end;
  98.  
  99. { TSearchThread }
  100.  
  101. constructor TSearchThread.Create(const FileName, SearchPath: string);
  102. begin
  103.   inherited Create(False);
  104.   FreeOnTerminate := True;
  105.   FFileName := FileName;
  106.   FSearchPath := SearchPath;
  107.   FDirectoriesSearched := 0;
  108. end;
  109.  
  110. function TSearchThread.FindFile(const FileName, SearchPath: string): string;
  111. begin
  112.   Form1.SearchFiles(SearchPath, FileName, '');
  113.   Result := '';
  114. end;
  115.  
  116. procedure TSearchThread.Execute;
  117. begin
  118.   FFoundPath := FindFile(FFileName, FSearchPath);
  119.   Synchronize(UpdateUI);
  120. end;
  121.  
  122. procedure TSearchThread.UpdateUI;
  123. begin
  124.   if FFoundPath <> '' then
  125.   begin
  126.     Form1.Memo1.Lines.Add('O arquivo ' + FFileName + ' encontrado ' + FFoundPath);
  127.   end
  128.   else
  129.     Form1.Memo1.Lines.Add('O arquivo ' + FFileName + ' não encontrado.');
  130. end;
  131.  
  132. procedure TSearchThread.UpdateStatus;
  133. begin
  134.   Form1.Label1.Text := FStatusText;
  135. end;
  136.  
  137. end.
  138.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement