Сейчас ругать вас буду.
У вас отличный инструмент есть в руках - отладчик, а вы им наверное не пользуетесь. Буквально сразу вылезло:
Код:
if FindFirst(Form2.kat1.Text+'\*.jpg', faAnyFile, fd)=0 then
У вас при выбраном шаблоне 1 значение Form2.kat1.Text = 'C:\1\*.*'
Ну и что будет если к 'C:\1\*.*' прибавить '\*.jpg' ? Правильно - ошибка.
Далее. Я вам код писал в расчете на использование только динамического массива, а вы теперь добавили листбокс и продолжаете использовать динамический массив. Вывод - нерационально и бездумно скопировали.
Далее:
Код:
if (ExtractFileExt(fs.Name) = '.JPG') or (ExtractFileExt(fs.Name) = '.jpg')
Это половинчатое решение, а если будет расширение .Jpg или JpG и т.д.&?
Следовательно надо делать иначе:
Код:
if UpperCase(ExtractFileExt(fs.Name)) = '.JPG'
В итоге всю процедуру можно сократить вдвое.
Код:
procedure TForm1.RadioButton1Click(Sender: TObject);
var
fs: TSearchRec;
begin
Label1.Caption:='Выбран шаблон №1';
Label2.Caption:=Form2.kat1.Text;
Label4.Caption:=Form2.kat11.Text;
Label1.Color:=clbtnface;
Listbox1.Clear;
if FindFirst(Form2.kat1.Text+'\*.jpg', faAnyFile, fs) = 0
then Repeat
Listbox1.AddItem(Form2.kat1.Text+'\'+fd.Name, nil);
until FindNext(fd)<>0;
FindClose(fs);
Button3.Enabled := not Listbox1.isEmpty;
end;
Весь код жутко неоптимален.
На кой бес для каждого радиобатона вы свой обработчик пишете? У вас одного общего хватит.
Можно еще долго продолжать. Ошибок и недоработак - тьма.