Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.054 c
14-47713
Skier
2002-06-19 12:49
2002.07.15
Про деревья...


1-47399
lex1
2002-06-27 15:31
2002.07.15
Визуализация контролов формы.


1-47270
qd5
2002-06-28 23:52
2002.07.15
Вызов процедуры


1-47372
Юра
2002-07-02 02:18
2002.07.15
Изменение размеров


3-47083
K_Dim
2002-06-14 13:23
2002.07.15
Забрать данные из текстовой таблицы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский