![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать файлы в папке? (Дубль 367) [D4, WinXP]
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;