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;
// **************************************************************************