Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать файлы в папке? (Дубль 367) [D4, WinXP]


Страницы:   1 2

Kolya ©   (2002-06-28 04:11:00) 

Как узнать файлы в определенной папке и их разширения?


rhf   (2002-06-28 23:57:00) [1]

я же писал (28.06.02 11:27)

findFirst(dir+"\*.*",faAnyFile-faDirectory,sr);
ну и т.д.

ЗЫ был еще пример с листБокс...... но ое тебе не пойдет (28.06.02 11:50)


Kolya   (2002-06-28 23:32:00) [2]

Ах на мой вопрос (как найти узнать только файлы, не папки?) пришел 21 ответ, но не один так и не смог до конца ответить на него, зато меня назвали 13"и летним мальчиком :)
как это сделать с помощью компонента Filelist я уже понял, но хотелось бы обойтись без него..
Мастера, все таки объясните, как отделить файлы от папок?
Помню, на VB писали if File1 = vbDirectory then ... а нету ли чего- нибудь похожево на Delphi?


KvORubin   (2002-06-28 14:16:00) [3]

Спасибо модератор, а то почему то текст скопировался..


Xrundik   (2002-06-28 13:57:00) [4]

Удалено модератором


KvORubin   (2002-06-28 13:56:00) [5]

Удалено модератором


Xrundik   (2002-06-28 13:55:00) [6]

Удалено модератором


Роман Василенко   (2002-06-28 13:29:00) [7]

rhf © (28.06.02 11:27)

Ой, прошу прощения. Я думал, ты имеешь ввиду полный путь к файлам.
Ну, в принципе, можно вместо faanyfile делать сложение faarchive, fahidden или что там еще, не помню и вспоминать не хочу.


rhf   (2002-06-28 11:50:00) [8]

кстати.... если надо отобразить список в листБокс, то можно и через апи

ListBox1.Perfor(LB_DIR,DDL_READWRITE+DDL_SYSTEM+DDL_HIDDEN,lparam(pchar(dir+"*.*")));


rhf   (2002-06-28 11:27:00) [9]

2 Роман Василенко

> Нет, будут занесены только имена файлов и расширения, оф коз.


а c каких пор faAnyFile не подходит для папок?
я всегда им пользуюсь и папки откидываю через faAnyFile-faDirectory


Роман Василенко   (2002-06-28 10:59:00) [10]

2KvORubin © (28.06.02 10:50)

Видишь ли, Денис...

Твой метод хорош для ручек, но...

1. Он добавляет лишние 30 килобайт к проекту.
2. В консольном приложении или сервисе (ха-ха) я не стал бы пользоваться таким методом, хотя использование АПИ и требует больше "рукоприкладства".

----

ext:=extractfileext(filename);

в extбудет расширение файла filename


KvORubin   (2002-06-28 10:50:00) [11]

Ну вы даёте, а я выдёргиваю список проще, ненадо голову ломать, ко всем версиям дельыи подходит и никаких ошибок, и скорость нормальная:

FileList1.Directory:="C:\qwe\";
FileList1.Update;
Memo1.Lines.Text:=FileList1.Items.Text;

Вот вам и список, а что ещё надо??? жалко чтоли компонентик лишний на форму кинуть, а если программа использует такой компонент, то это ещё лучше..

Ну и в заключении нужно разделить имя и расширение, это довольно просто имея точку в слове,, только я незнаю как делить..:)


Роман Василенко   (2002-06-28 10:47:00) [12]

2rhf
* 2 Роман Василенко
* вы не объявили ts :) и если говорить по теме, то Kolya просил * только файлы, а у вас будт занесены также и папки...

Нет, будут занесены только имена файлов и расширения, оф коз.


Роман Василенко   (2002-06-28 10:35:00) [13]

2Anatoly Podgoretsky ©

>Как узнать файлы в определенной папке и их разширения?

Анатолий. Ты видишь это?

Я был на твоей странице.
================
NPS Home Page
Вы у меня 1 раз(а), всего посетителей: 72079
================

Наверняка, тебя учили в институте. Если да, вспомни, всегда ли ты умел учиться правильно?

Наверняка, у тебя есть дети. Ты им никогда ничего не объяснял? Голосом и с подзатыльниками, в сотый или тысячный раз, а?

Наш Kolya может оказаться 45-летним мужиком с толстым пузом и в очках, но если он не может сам найти информацию, в нашей среде он младше какого-нибудь 13-летнего SuperInside, свободно шарящего в OLAP или там MSSQL, и могущего найти какую угодно информацию.

В таких случаях, мне кажется, не надо ссылаться на то, что ты выучил много лет назад, а стоит опуститься до более подробных объяснений (даже в 28-й раз). Либо послать "мальчика" сразу по адресу - я имею ввиду http://delphibase.endimus.com/.


Anatoly Podgoretsky   (2002-06-28 10:22:00) [14]

Роман Василенко © (28.06.02 10:13)
Так если бы было по английски, ты бы наверно сначала проштудировал этот самый RTFM, по тебе вижу что да, а только потом бы пошел на форум за дополнительной информацией, а здесь не то что на английском, здесь это есть в нескольких вариантах даже на русском, надо сделать только элементарный поиск.
Поиск по указаному ругательному слову дал 27 ссылок


Anatoly Podgoretsky   (2002-06-28 10:16:00) [15]

rhf © (28.06.02 09:58)
В отдельных версиях проверятся, а в других нет, но на ошибку при определенных условиях я натыкался и в Д5


Роман Василенко   (2002-06-28 10:13:00) [16]

2rhf: Сама, сама... они все сами проверяют, эти гнусные АПИшные функции.

2ALL: Ну, простите, простите. Бывают ошибки у всех. Но, в конце концов один забытый tsлучше, чем если "забыть" все остальное, что к нему прилагаться должно.

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

Был у меня программный продукт некой шведской фирмы, и фирма приложила к нему мануалы... по ихнему. Если учесть, что я кроме английского знаю только русский - с этими мануалами можно попрощаться.
Я пошел на форум (хорошо, что был такой). вышеуказанной фирмы и ПО и забивал этот форум своими глупыми вопросами месяц. Мне никто не сказал ни слова насчет мануалов.

Я не к тому, что мы хуже их, но просто...

Профессионалы! Имейте снисхождение и немного терпения к тем, кто не знает чего-то, что знаете вы.


rhf   (2002-06-28 09:58:00) [17]

2 Anatoly Podgoretsky
никогда не задумывался даже об этом, я думаю findClose сама проверяет распределен ресурс или нет... по крайней мере никогда не было ошибок.


Anatoly Podgoretsky   (2002-06-28 09:53:00) [18]

rhf © (28.06.02 09:08)
"и не забудте в конце findClose....."

А вот это уже опасно, вызывать надо если ресурс распределен, иначе могут быть ошибки, зависит от версии Дельфи

Роман Василенко © (28.06.02 09:27)
добрые дяденькиговоря главное, дальше дело техники сделать поиск на сайт и перед глазами будет готовая фукция.


rhf   (2002-06-28 09:52:00) [19]

2 Роман Василенко
вы не объявили ts :) и если говорить по теме, то Kolya просил только файлы, а у вас будт занесены также и папки...

ЗЫ ...и если всегда копировать исходники..... то так никогда и не запомнишь как оператор пишеться и зачем он нужен...


Роман Василенко   (2002-06-28 09:27:00) [20]

К сожалению, добрые дяденьки только говорят названия функций и непонятную аббревиатуру RTFM, и ничего толком не объясняют...

---
function getfiles(dir:string):tstringlist;
begin
result:=tstringlist.create;
if findfirst(dir+"*.*",faanyfile,ts)=0 then
repeat
if (not ansisametext(ts.name,".")) and (not ansisametext(ts.name,"..")) then result.add(ts.name);
until findnext(ts)<>0;
findclose(ts);
end;

---

Ну вот, значит. Вызываешь ты эту функцию так:

...
const
dir:string="c:\windows\"; //В конце пути должен быть слэш, обязательно.
var
sl:tstringlist;
f:integer;
ext:string;
begin
...
sl:=getfiles(dir);
if sl.count=0 then showmessage("В указанной папке нет файлов")
else begin
for f:=0 to sl.count-1 do begin
//Здесь производишь нужные тебе действия
ext:=extractfileext(dir+sl[f]); //Так получаешь расширение
//Ну и чо там тебе еще надо...
end;
end;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо