52645.fb2
{ 48 } Dir := Path; count := 0;
{ 49 } if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],0)
{ 50 } then
{ 51 } begin
{ 52 } if Dir[length(Dir)]='\'
{ 53 } then delete(Dir, length(Dir),1);
{ 54 } DelEmtyDir(Dir);
{ 55 } ShowMessage('Deleted ' + IntToStr(count) +' folders.');
{ 56 } end;
{ 57 } end;
{ 58 }
{ 59 } procedure TForm1.FormCreate(Sender: TObject);
{ 60 } begin
{ 61 } Path := ExtractFileDir(ParamStr(0)) + '\';
{ 62 } end;
// конец кода
|go| Не работает. Delphi не знает кто такое SelectDirectory.
|t_| Ничего, потихоньку научишься работать, поставь курсор на слово - ошибку и нажми F1.
|go| Получил help. Ну и что дальше.
|t_| В help найди к какому unit относился функция SelectDirectory и вставь это название в uses своей программы. Так поступай и в дальнейшем, больше старайся использовать help и умеренно, советы из интернета, к сожалению в этой "всемирной свалке" надо хорошо покопаться чтобы найти алмазы, а по пути можно и замазаться...
|go| Как сказал кот Матроскин - "Заработало!!!"
|t_| Хорошо, ну а теперь найди в программе ошибку. Подсказка, тоже цитата "Хотели как лучше, а получилось... "
|go| Нашел, каждый раз при нажатии кнопки выбор папки начинается из папки программы, а это неудобно.
|t_| Ну, ты даешь! Нашел не запланированную мною ошибку. Ты совершенно прав. Давай исправлять.
{ 46 } Dir : AnsiString; - определение переменной сделай глобальным
{ 0 } var
{ 1 } Form1: TForm1;
Dir : AnsiString;
{ 2 } Path : AnsiString; // путь к папке с программой
а строчку 46 удали
теперь:
{ 48 } Dir := Path; - это присваивание отсюда забери и вставь в:
{ 61 } Path := ExtractFileDir(ParamStr(0)) + '\';
Dir := Path;
{ 62 } end;
Ну, а теперь, ищи дальше.
|go| Не понял смысла в строках
{ 52 } if Dir[length(Dir)]='\'
{ 53 } then delete(Dir, length(Dir),1);
Dir и так возвращается без конечного слеша.
|t_| Не совсем так. Если ты будешь искать в корневом каталоге, то там будет слеш (например: с:\ ). Ищи дальше.
|go| Наверно это строки
{ 33 } begin // найден какой то файл
{ 34 } result := false; // значит папка не пуста.
{ 35 } FindClose(SR);
{ 36 } exit;
{ 37 } end;
не знаю в чем ошибка, хотя бы потому, что я не понимаю их смысла.
|t_| Да, это ошибка и есть. Подразумевалось такое рассуждение: если в папки найден какой то файл, значит папка не пуста, а значит и искать дальше нечего, и давай сэкономим время.