mamy takie coś
Wyjątki
posługuję się składnią
try .. except .. end;
kompiluję program ctrl+F9
odpalam exe'ka
a mimo to wciąż wywala mi błąd i przerywa działanie pętli
dlaczego?!
błąd jest pomiędzy try a except
procedura wygląda następująco:
ListBox1. - list box - lista katalogów
ListBox2 - wynikowa lista plików
begin
jpg:=TJPEGImage.Create;
if FindFirst(ListBox1.Items.Strings[n]+'\*.jpg',faAnyFile,sr)=0 then //wyszukiwanie wszystkich plików jpg w katalogu
begin
repeat
if oo1.Checked=true then // jeśli jest włączone sprawdzanie rozdzielczości
begin
try
jpg.LoadFromFile(ListBox1.Items.Strings[n]+'\'+sr.Name); //wczytanie pliku, TO TU CZASAMI WYSTĘPUJĄ BŁĘDY
r:=inttostr(jpg.Width)+'x'+inttostr(jpg.Height); // wczytanie rozdzielczości
if ini.SectionExists(r) then ListBox2.Items.Add(ListBox1.Items.Strings[n]+'\'+sr.Name); // sprawdzenie czy rozdzielczość jest znana i ewentualnie dodaje plik do listy
except
Inc(nerr); // wrazie wystąpienia błędu zliczaj ich ilość
arrerr[nerr]:=ListBox1.Items.Strings[n]+'\'+sr.Name; // jeśli wystąpi błąd zarejestruj informację o nim, czyli zapisz ścieżkę do pliku
end;
end else ListBox2.Items.Add(ListBox1.Items.Strings[n]+'\'+sr.Name); // jeśli nie ma sprawdzania rozdzielczości, dodawaj wszystkie pliki - działa bez zarzutu
until FindNext(sr) <> 0;
end;
jpg.Free;
end;
błąd: Acces Voilation
przerwanie pętli, dalsze pliki nie są już wyszukiwane
a ma nie być komunikatu o błędzie, a pliki mają się wyszukiwać dalej.
co jest w tym źle?
pozdrawiam.