Napisałem wątek który co 7 minut szuka dane pliki w katalogu i usuwa stare. Jednak co jakis czas (przeważnie co 4 uruchomienie aplikacji) wywala błąd z Thread.
W OnCreate mam:
If not Assigned(Czysc) then
begin
Czysc := TCzysc.Create(False);
Czysc.Priority := tpidle;
end;
Natomiast cały wątek wygląda tak:
procedure TCzysc.Execute;
var
SR : TSearchRec;
Found : Integer;
begin
FreeOnTerminate := True;
while not (Application.Terminated) or (Terminated) do
begin
if (Usuwaj=True) then
BEGIN
Found := FindFirst(ExtractFilePath(Application.ExeName) + 'System\Plugins\ContactState-Rejestry'+IntToStr(LogUser.AqqNumber)+'\*.txt', faAnyFile, SR); // odnajdz
while (Found = 0) do // dopoki liczba znalezionych plikow nie bedzie rowna 0
begin
if DaysBetween(Now, StrToDateTime(StringReplace(SR.Name, '.txt', '', [rfReplaceAll])) )>Dni then
DeleteFile(ExtractFilePath(Application.ExeName) + 'System\Plugins\ContactState-Rejestry'+IntToStr(LogUser.AqqNumber)+'\'+SR.Name);
Found := FindNext(SR); // szukaj dalej
end;
Sleep(450000);
END;
end;
FindClose(SR); // zakoncz wyszukiwanie
end;
Ktoś wie gdzie może być błąd?
---EDIT---
Jak skopiowałem ów wątek do zwykłej procki to w DeleteFile wywalilo mi że String nie kompatybilny z Char. Zamieniłem i jest ok, ale za to kompilator przy FindClose(SR) wywala że Incopatible Cardinal and TSearchRec. Dlaczego?