Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2015, 13:23   #11
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
faAnyFile
папки учитывает, могу ошибаться, не помню сейчас
come-on вне форума Ответить с цитированием
Старый 04.12.2015, 13:30   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
папки учитывает, могу ошибаться, не помню сейчас
Да, но у ТС это отсечено условием, которое папку на рекурсию выводит.
У меня его код работает, я скрин выше давал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.12.2015, 13:35   #13
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Скорее всего дело в ссылках. В Файловой системе введены жёсткие и мягкие ссылки. Один файл на диске имеет несколько записей в файловой системе. Вот поэтому и разница.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 04.12.2015, 13:35   #14
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Стоит учитывать, что в папке виндовс есть ссылки
p51x вне форума Ответить с цитированием
Старый 04.12.2015, 13:38   #15
botan32
Пользователь
 
Регистрация: 26.11.2015
Сообщений: 52
По умолчанию

А как учитывать в поиске эти ссылки, если конечно можно?
botan32 вне форума Ответить с цитированием
Старый 04.12.2015, 13:58   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Стоит учитывать, что в папке виндовс есть ссылки
Не пойму причем тут ссылки? Это же тоже файлы...
Цитата:
В Файловой системе введены жёсткие и мягкие ссылки.
В Винде? 10-й??
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.12.2015, 14:51   #17
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Stilet,
Цитата:
Не пойму причем тут ссылки? Это же тоже файлы...
Это другие ссылки.
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Можно создать и удалить через MKLink

В Win10 для поддержки старых программ используются ссылки на папки. Там новая структура каталогов и новые папки отображаются на старую структуру.

botan32
Смотри IO_REPARSE_TAG_SYMLINK в
https://msdn.microsoft.com/ru-ru/lib...(v=vs.85).aspx
Ещё посмотрите, возможно есть разница 32 и 64 бита!
http://www.delphimaster.ru/cgi-bin/f...&id=1443892079

Вечером проверю.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 04.12.2015, 15:48   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Там новая структура каталогов
А-а-а... Я что-то такое припоминаю. Слышал...
Но ТС тестил на другой оси, разбежности всетки есть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.12.2015, 15:51   #19
botan32
Пользователь
 
Регистрация: 26.11.2015
Сообщений: 52
По умолчанию

Спасибо за наводку Pavia. Проблему решил через разрядность Windows. Доработал функцию следующим образом и скомпилировал 2 ехе-файла (х32 и х64). В версии х64 результат сходится.

Вот функция, может кому пригодится:
function CountFiles(Dir: String): Int64;
var
lResult : integer;
Handle: THandle;
SearchRec: TWin32FindData;
begin
Handle := FindFirstFile(PCHAR(Dir + '\*.*'), SearchRec);
lResult := 0;
if Handle <> INVALID_HANDLE_VALUE then
repeat
Application.ProcessMessages;
if (SearchRec.dwFileAttributes and faDirectory) <> 0 then
begin
if (String(SearchRec.cFileName) <> '.') and (String(SearchRec.cFileName) <> '..') then
lResult := lResult + CountFiles(Dir +'\'+ SearchRec.cFileName);
end
else
Inc(lResult);
until (not FindNextFile(Handle, SearchRec)) and (not Application.Terminated);
Winapi.Windows.FindClose(Handle);
Result := Int64(lResult);
end;
botan32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами: запись, добавление, чтение (найти ошибку в коде) / C для начинающих Надо создать программу для работы с файлами Konlor Общие вопросы C/C++ 2 18.05.2014 12:37
Работа с файлами и директориями. Как копировать директорию с ее содержимым в другую директорию??? Дмитрий_Попов Общие вопросы C/C++ 1 14.12.2011 21:49
Работа с директориями Anubys Win Api 4 04.12.2011 13:04
Работа с директориями. С++ leeeys Помощь студентам 6 14.05.2011 16:59
Работа с файлами Gen_r_questions PHP 5 29.04.2011 09:01