Einzelnen Beitrag anzeigen

Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Directory und Files auflisten

  Alt 16. Aug 2019, 16:39
Eine andere Sache ist hierbei aufgetreten.
Möglicherweise hat dazu jemand eine Idee.

Wenn ich in mein Programm ein Application.ProcessMessages einbaue, hängt das Programm an dieser Stelle und muss mit dem Taskmanager beendet werden.

Hier das Programm dazu:

Delphi-Quellcode:
// **************************************************************************
procedure TForm1.btnStartClick(Sender: TObject);
var
  // SearchResult
  MainVerz: TStringDynArray;
  SearchResult: TStringDynArray;
  StartTime, FirstTime: TTime;
  I: Integer;

begin
  for I := 0 to 10 do
    TaskStatus[I] := False;

  Grid.RowCount := 1000; // High(SearchResult);
  Grid.FixedCols := 1;
  Grid.ColCount := 3;
  Grid.StartUpdate;
  AktLine := 1;

  // Uses IOUtils für GetDir..und System.Types für DynArray hinzufügen
  // Alle Hauptverzeichnisse einlesen und dann pro Verz. eine Suche ausführen in eigenem Thrad
  StartTime := Now();
  FirstTime := Now;
  MainVerz := TDirectory.GetDirectories('Y:\eBooks\eLoad24', TSearchOption.soTopDirectoryOnly, nil);

  for j := 0 to High(MainVerz) do
    begin
      ListBox1.Items.Add(MainVerz[j]);
      try
        Begin
          // Einlesen der Dateien ab dem Verz[j]
          SearchResult := TDirectory.GetFiles(MainVerz[j], '*.pdf', TSearchOption.soAllDirectories);
          for I := Low(SearchResult) to High(SearchResult) do
            begin
              if SearchResult[I] <> 'then
                begin
                  Grid.Cells[1, AktLine] := ExtractFilename(SearchResult[I]);
                  Grid.Cells[2, AktLine] := ExtractFilePath(SearchResult[I]);
                  inc(AktLine);
                end;
            end;
          TaskStatus[j] := True;
          ListBox1.Items.Add('Task ' + IntToStr(j) + ' Zeit: ' + FormatDateTime('hh:nn:ss:zzz', Now - StartTime));
          StartTime := Now();
          // Application.ProcessMessages;
        End;
      except
        { Catch the possible exceptions }
        MessageDlg('Incorrect path or search mask', mtError, [mbOK], 0);
        Exit;
      end;
      // Application.ProcessMessages;

    end;

  ListBox1.Items.Add('--------------------------------------------');
  ListBox1.Items.Add('Gesamt Zeit: ' + FormatDateTime('hh:nn:ss:zzz', Now - FirstTime));

  Grid.RowCount := AktLine;
  Grid.AutoSizeCol(1);
  Grid.AutoSizeCol(2);
  Grid.SortSettings.IgnoreCase := True;
  Grid.Sort(1, sdAscending);
  Grid.SortSettings.Show := True;
  Grid.EndUpdate;
end;
// **************************************************************************
  Mit Zitat antworten Zitat