Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Ответ
 
Опции темы
Старый 25.02.2009, 22:21   #1
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию Как узнать из адреса файл это или папка?

Доброго времени суток! У меня есть 3 листбокса.
ListBox1 содержит строки:
D:\files\lol
D:\files\music\song.mp3
D:\games\nfs.rar
и т. д. (т. е. кое - какие папки, файлы)

Надо чтобы все строки, которые содержат "папки" (D:\files\lol) попадали в ListBox2, а все файлы формата mp3 (D:\files\music\song.mp3) попадали в ListBox3. А остальные файлы никуда (D:\games\nfs.rar).

Ясно, что видимо надо запустить
Код:
var
a:integer;
begin
for a:=0 to ListBox1.Count-1
do begin
а вот тут загвоздка! Не знаю как отличить пути файлов от папок!
end;
end;
Заранее благодарен!
Anfall вне форума Ответить с цитированием
Старый 25.02.2009, 23:00   #2
Joe_Tribbiani
Форумчанин
 
Аватар для Joe_Tribbiani
 
Регистрация: 14.02.2009
Сообщений: 110
По умолчанию

сморти:
Код:
if pos('.',listbox1.items(a))<>0 then  это файл
else это папка
тоесть мы проверяем есть ли точка в строке
Joe_Tribbiani вне форума Ответить с цитированием
Старый 25.02.2009, 23:04   #3
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию

Спасибо! Но ведь точка может быть и в названии папки!
Anfall вне форума Ответить с цитированием
Старый 25.02.2009, 23:11   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Как узнать из адреса файл это или папка?
Взять этот адрес, найти его на диске и посмотреть значение атрибута faDirectory. Используется TSearchRec и функция FindFirst.
mihali4 вне форума Ответить с цитированием
Старый 25.02.2009, 23:16   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,235
По умолчанию

У папки установлен атрибут faDirectory.
Узнать атрибуты файла можно через функцию FileGetAttr, примерно так:
Код:
Attr := FileGetAttr (FileName);
if Attr and faDirectory = faDirectory then // папка

Последний раз редактировалось Arigato; 25.02.2009 в 23:19.
Arigato вне форума Ответить с цитированием
Старый 25.02.2009, 23:18   #6
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Взять этот адрес, найти его на диске и посмотреть значение атрибута faDirectory. Используется TSearchRec и функция FindFirst.
Неее. Это ведь слишком долго и бесполезно. Возможно можно использовать ExtractFileName. Но у меня как - то не получается(
Anfall вне форума Ответить с цитированием
Старый 25.02.2009, 23:23   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,235
По умолчанию

Цитата:
Возможно можно использовать ExtractFileName.
См. моё сообщение выше.
Arigato вне форума Ответить с цитированием
Старый 25.02.2009, 23:23   #8
Anfall
Форумчанин
 
Регистрация: 10.02.2009
Сообщений: 181
По умолчанию

Хм, Arigato, спсибо. Я вот еще придумал.

If ExtractFileName(......)='' then .... else .....
Anfall вне форума Ответить с цитированием
Старый 25.02.2009, 23:25   #9
Joe_Tribbiani
Форумчанин
 
Аватар для Joe_Tribbiani
 
Регистрация: 14.02.2009
Сообщений: 110
По умолчанию

Цитата:
Неее. Это ведь слишком долго и бесполезно.
да как раз это не долго)
Цитата:
Но ведь точка может быть и в названии папки!
да, ну тогда моим способом не получиться...
разве что можеш создать массив расширений и сравнивать
ExtractFileName(listbox1.items(a)) с каждым елементом)))))))))
Joe_Tribbiani вне форума Ответить с цитированием
Старый 25.02.2009, 23:25   #10
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Код:
If (GetFileAttributes('C:\filename') and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY
  then папка
  else файл
пыщь
JTG вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать, выдвинут, или задвинут, определённый дисковод? Altera Win Api 5 10.03.2009 08:47
файл и папка StartMis Общие вопросы Delphi 1 19.11.2008 19:48
Как по пути опредилить файл это или папка Anatol_rus Мультимедиа в Delphi 2 07.11.2008 11:51
как узнать string или Real Влажимир Общие вопросы Delphi 2 11.04.2008 16:06
(Это снова я) Как записать в файл? Air Общие вопросы Delphi 5 03.05.2007 19:36


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS