Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
ВнизКак узнать файлы в папке? (Дубль 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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.011 c