Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.15;
Скачать: CL | DM;

Вниз

Как узнать файлы в папке? (Дубль 367)   Найти похожие ветки 

 
Kolya ©   (2002-06-28 04:11) [0]

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


 
MBo ©   (2002-06-28 06:30) [1]

с помощью FindFirst,FindNext


 
Anatoly Podgoretsky ©   (2002-06-28 08:59) [2]

FindFirst бич данного форума


 
rhf ©   (2002-06-28 09:08) [3]

и не забудте в конце findClose.....


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

К сожалению, добрые дяденьки только говорят названия функций и непонятную аббревиатуру 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;


 
rhf ©   (2002-06-28 09:52) [5]

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

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


 
Anatoly Podgoretsky ©   (2002-06-28 09:53) [6]

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

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

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


 
rhf ©   (2002-06-28 09:58) [7]

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


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

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

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

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

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

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

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


 
Anatoly Podgoretsky ©   (2002-06-28 10:16) [9]

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


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

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


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

2Anatoly Podgoretsky ©

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

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

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

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

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

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

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


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

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

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


 
KvORubin ©   (2002-06-28 10:50) [13]

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

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

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

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


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

2KvORubin © (28.06.02 10:50)

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

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

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

----

ext:=extractfileext(filename);

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


 
rhf ©   (2002-06-28 11:27) [15]

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

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


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



 
rhf ©   (2002-06-28 11:50) [16]

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

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



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

rhf © (28.06.02 11:27)

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


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

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


 
KvORubin ©   (2002-06-28 13:56) [19]

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


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

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


 
KvORubin ©   (2002-06-28 14:16) [21]

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


 
Kolya ©   (2002-06-28 23:32) [22]

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


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

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2002.07.15;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.034 c
1-47444
Катерина
2002-07-03 11:56
2002.07.15
try...


1-47450
kalliopiy
2002-07-03 13:46
2002.07.15
Есть ли


1-47424
PycUS
2002-07-01 22:10
2002.07.15
Картинки


14-47755
Val
2002-06-12 12:39
2002.07.15
Дао Программирования


3-47178
Салага
2002-06-19 11:20
2002.07.15
Справочник ошибок с русским описанием...