КулЛиб - Классная библиотека! Скачать книги бесплатно
Всего книг - 712690 томов
Объем библиотеки - 1401 Гб.
Всего авторов - 274532
Пользователей - 125071

Новое на форуме

Новое в блогах

Впечатления

Влад и мир про Шенгальц: Черные ножи (Альтернативная история)

Читать не интересно. Стиль написания - тягомотина и небывальщина. Как вы представляете 16 летнего пацана за 180, худого, болезненного, с больным сердцем, недоедающего, работающего по 12 часов в цеху по сборке танков, при этом имеющий силы вставать пораньше и заниматься спортом и тренировкой. Тут и здоровый человек сдохнет. Как всегда автор пишет о чём не имеет представление. Я лично общался с рабочим на заводе Свердлова, производившего

  подробнее ...

Рейтинг: 0 ( 0 за, 0 против).
Влад и мир про Владимиров: Ирландец 2 (Альтернативная история)

Написано хорошо. Но сама тема не моя. Становление мафиози! Не люблю ворьё. Вор на воре сидит и вором погоняет и о ворах книжки сочиняет! Любой вор всегда себя считает жертвой обстоятельств, мол не сам, а жизнь такая! А жизнь кругом такая, потому, что сам ты такой! С арифметикой у автора тоже всё печально, как и у ГГ. Простая задачка. Есть игроки, сдающие определённую сумму для участия в игре и получающие определённое количество фишек. Если в

  подробнее ...

Рейтинг: 0 ( 0 за, 0 против).
DXBCKT про Дамиров: Курсант: Назад в СССР (Детективная фантастика)

Месяца 3-4 назад прочел (а вернее прослушал в аудиоверсии) данную книгу - а руки (прокомментировать ее) все никак не доходили)) Ну а вот на выходных, появилось время - за сим, я наконец-таки сподобился это сделать))

С одной стороны - казалось бы вполне «знакомая и местами изьезженная» тема (чуть не сказал - пластинка)) С другой же, именно нюансы порой позволяют отличить очередной «шаблон», от действительно интересной вещи...

В начале

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).
DXBCKT про Стариков: Геополитика: Как это делается (Политика и дипломатия)

Вообще-то если честно, то я даже не собирался брать эту книгу... Однако - отсутствие иного выбора и низкая цена (после 3 или 4-го захода в книжный) все таки "сделали свое черное дело" и книга была куплена))

Не собирался же ее брать изначально поскольку (давным давно до этого) после прочтения одной "явно неудавшейся" книги автора, навсегда зарекся это делать... Но потом до меня все-таки дошло что (это все же) не "очередная злободневная" (читай

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).
DXBCKT про Москаленко: Малой. Книга 3 (Боевая фантастика)

Третья часть делает еще более явный уклон в экзотерику и несмотря на все стсндартные шаблоны Eve-вселенной (базы знаний, нейросети и прочие девайсы) все сводится к очередной "ступени самосознания" и общения "в Астралях")) А уж почти каждодневные "глюки-подключения-беседы" с "проснувшейся планетой" (в виде галлюцинации - в образе симпатичной девчонки) так и вообще...))

В общем герою (лишь формально вникающему в разные железки и нейросети)

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).

Рекурсия [Юрий Карпов] (fb2) читать постранично, страница - 3


 [Настройки текста]  [Cбросить фильтры]

ShowMessage('Удалено ' + IntToStr(CCount) +' папок.')

{ 104 } else ShowMessage('Не могу удалить '+intToStr(Items.Count)+' папок');

{ 105 } end;

{ 106 } end;

{ 107 }

{ 108 } end.

// конец кода


Скопируй сей текст в какой либо файл и давай на него посмотрим.


|go| Готово.

У матросов есть вопросов.

Я понял, почему ты переназвал функцию ScanEmtyDir, но почему наименование счетчика сменилось на Ccount


|t_| Сменил, чтобы не было конфликта имен с списком CheckListBox1, тут я немного схалтурил, рекомендуется давать осмысленные имена, ну бывает, поленился.


|go| Я не понял эти строки:

{ 54 } with Form1.CheckListBox1 do

{ 55 } Checked[Items.Add(Target+'\'+ SR.Name)] := true;


|t_| Это можно было бы написать более подробно (и более понятно)


var n : integer; // номер строки в списке

...

n := Form1.CheckListBox1. Items.Add(Target+'\'+ SR.Name);

Form1.CheckListBox1.Checked[n] := true;


Но мне не хотелось вводить совершенно лишнюю переменную.


|go| Хорошо, а что это за загадочные точки в строках 43 и 44

{ 43 } if (SR.Name <> '.')

{ 44 } and (SR.Name <> '..')


|t_| Это особенности операционной системы, две точки это обращение к родительской папке, а одна это обращение к текущей папке.

Давай сделаем маленький эксперимент.

В любой папке создай текстовый файл.

Скопируй в него следующий текст


rem начало кода

cd ..

dir

pause

rem конец кода


сохрани изменения.

теперь переименуй файл, ну например proba.bat

Вся соль тут в расширении.

Запусти файл на исполнение.

В окошке с заголовком cmd.exe ты увидишь распечатку содержимого родительского (для текущего каталога) каталога { кстати, обрати внимание я сразу сбился на досовскую терминологию, напомню, каталог это папка }

И вот смотри, вверху, те самые точки. Т.е. операционная система при поиске всегда выдает ссылки на текущую и родительские папки, но нам они абсолютно не нужны и посему мы исключаем их из рассмотрения.

Do you understand?


|go|Oh! Yes, yes!

А как насчет строчки 49

{ 49 } if ((SR.Attr and $10) = $10 ) then


|t_| Ты возможно заметил что в предыдущей строке комментария, дается расшифровка этой строки

{ 48 } // если это папка

Но все таки давай разберемся подробнее.

Во первых, открою тебе великую тайну. Папка (folder, каталог, директорий) на самом деле это файл.

Да, это просто файл, и отличается он от других только атрибутом. Вот теперь мы добрались до атрибутов.

Вызови help на слове TsearchRec и ты увидишь(кроме всего прочего) :

faReadOnly $00000001 Read-only files

faHidden $00000002 Hidden files

faSysFile $00000004 System files

faVolumeID $00000008 Volume ID files

faDirectory $00000010 Directory files

faArchive $00000020 Archive files

faAnyFile $0000003F Any file

Нас интересует faDirectory но у папки могут быть установлены и другие атрибуты, а устанавливаются они сложением соответствующих значений.

Значит для определения, что рассматриваемый файл является папкой сказать

if SR.Attr = $10

будет неправильно, т.к. $11, $12, $13, $14, $15 ... - это тоже папки.

Поэтому лучше сначала обрезать значение с помощью &

В результате операции SR.Attr and $10 останется или 0 или $10, и это мы проконтролируем.


|go| Чёто сложновато.


|t_| Ну, я тут немножко повыёживался, не очень подробно объясняю.

Но, я хотел подвести к морали: программист должен очень много знать. В том числе работу операционной системы, и, а это святое - алгебру логики.


|go| Намек понял, не дурак. Надо подучить.


|t_| Ну, что ж, давай на этой оптимистичной ноте, заканчивать сегодняшнее занятие.

Сегодня мы сделали полезную, но, не очень необходимую утилитку.

В следующий раз мы будем продолжать тему "Рекурсия", я предлагаю сделать программку имитирующую windows Поиск, но с бОльшими возможностями:

Поиск регулярных выражений

Поиск в найденном

Сохранение и Загрузка списка найденных файлов

See you later.


|go| До связи.

Примечания

1

Как получить исходник из этой книги, описано в "Извлекаем архив из fb2"

(обратно)