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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2014, 23:45   #1
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию Папка или файл

Помогите как определить что это файл или папка? Делаю так:
Код:
function DirExists(const Name:string):Boolean;
var
PathName:Byte;
begin
PathName:=GetFileAttributes(PChar(Name));
Result:=(PathName<>-1) and (FILE_ATTRIBUTE_DIRECTORY and PathName<>0);
end;
но например файл pagefile.sys определяется как папка(это только тот который я заметил, возможно есть еще). Пробовал проверять если есть расширение то это файл, но и тут заминка. Есть папки такие как например Microsoft.NET, и тут ступор показывает что файл. Так все же как определить, желательно на api delphi примерчик.
HTTqp вне форума Ответить с цитированием
Старый 03.05.2014, 23:59   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Смотрите в сторону TSearchRec.
Streletz вне форума Ответить с цитированием
Старый 04.05.2014, 00:30   #3
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

да, можно, но может есть еще вариаты?
HTTqp вне форума Ответить с цитированием
Старый 04.05.2014, 02:15   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

2 HTTqp
Чисто из любопытства.
Почему PathName:Byte; ? В оригинале эта переменная имеет тип Integer.
northener вне форума Ответить с цитированием
Старый 04.05.2014, 02:21   #5
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
2 HTTqp
Чисто из любопытства.
Почему PathName:Byte; ? В оригинале эта переменная имеет тип Integer.
Отвечаю, так как Byte меньше по объему и не вижу смысла использовать Integer. Проблем от перемены типов не вижу. Или же ошибаюсь?
HTTqp вне форума Ответить с цитированием
Старый 04.05.2014, 02:27   #6
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
В оригинале эта переменная имеет тип Integer
DWORD если быть точными
doktor255 вне форума Ответить с цитированием
Старый 04.05.2014, 02:47   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Отвечаю, так как Byte меньше по объему и не вижу смысла использовать Integer. Проблем от перемены типов не вижу. Или же ошибаюсь?
Во прикольно будет когда врач скажет вам, что не видит смысла давать вам больше обезболивающего, когда у вас высокий болевой порог
Или когда вам камин/печь сделают из простого кирпича, а не из огнеупорного.. ведь кирпич он и в африке кирпич

Весело будет

Как написано так и делайте. 4 байта, значит 4 байта, и никак не 1, потому что так надо.


И проверка делается проще:
Код:
Flags:= GetFileAttrbytes...
Result := (Flags = (Flags and FILE_ATTRIBUTE_DIRECTORY));

Последний раз редактировалось Человек_Борща; 04.05.2014 в 02:55.
Человек_Борща вне форума Ответить с цитированием
Старый 04.05.2014, 03:05   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от doktor255 Посмотреть сообщение
DWORD если быть точными
Это в какой версии Дельфи?

Цитата:
Сообщение от HTTqp Посмотреть сообщение
Отвечаю, так как Byte меньше по объему и не вижу смысла использовать Integer. Проблем от перемены типов не вижу. Или же ошибаюсь?
А это ничего что Byte - безнаковое целое?

Последний раз редактировалось Stilet; 04.05.2014 в 10:07.
northener вне форума Ответить с цитированием
Старый 04.05.2014, 03:08   #9
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

northener XE6. В D7 Cardinal.
doktor255 вне форума Ответить с цитированием
Старый 04.05.2014, 03:18   #10
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от doktor255 Посмотреть сообщение
northener XE6. В D7 Cardinal.
Имхо в Д7 Cardinal - Integer.
northener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файл или папка -Jack- Общие вопросы Delphi 2 16.07.2012 03:12
Shelllistview...проверить папка или нет? Port 111 Общие вопросы Delphi 0 31.05.2012 17:57
Как узнать из адреса файл это или папка? Anfall Общие вопросы Delphi 12 25.02.2009 23:40
файл и папка StartMis Общие вопросы Delphi 1 19.11.2008 19:48
Как по пути опредилить файл это или папка Anatol_rus Мультимедиа в Delphi 2 07.11.2008 11:51