Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
12 / 5 / 2
Регистрация: 13.02.2011
Сообщений: 51

Список всех файлов с заданным расширением

19.12.2012, 00:01. Показов 2998. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добавлено через 2 часа 27 минут
C++
1
2
3
4
5
6
7
8
9
10
11
if (FindFirst(path+"*.docx", faAnyFile, tsch_r) == 0 )
    {
        do
        {
 
            ListBox1->Items->Add(path+tsch_r.Name); fil=path+tsch_r.Name;
        }
        while(FindNext(tsch_r) == 0);
    }
 
    FindClose(tsch_r);
Теперь пытаемся открыть файл и считать информацию в рич эдит.
C++
1
2
3
4
5
6
7
8
9
10
if (ListBox1->Count!=0)
    {
    //fil=ListBox1->Items[0].Text; ShowMessage(fil);
    vVarApp = CreateOleObject("Word.Application");
    vVarDocs=vVarApp.OlePropertyGet("Documents");
    vVarDocs.OleFunction("Open", StringToOleStr(fil));
    vVarApp.OlePropertySet("Visible",true);
    RichEdit1->Text=vVarDocs.OlePropertyGet("Range").OlePropertyGet("Text");
    vVarApp.OleProcedure("Quit");
    }
НО, пи попытке добавления текста в едит, выскакивает ошибка..
Кто знает в чем проблема?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.12.2012, 00:01
Ответы с готовыми решениями:

Получить список всех вложенных файлов
Доброго времени суток, подскажите пож метод. Необходимо отсортировать файлы проекта, проект-папка, в папке может быть неопределённое...

Очистка файлов с определённым расширением
Помогите, нужен код для очищения файлов (с указанным заранее каталогом и заданными форматами в коде) Для примера я пытался использовать...

Не компилируется релиз. Не хватает файлов с расширением res
Убрал галочки с dynamic rtl и build with runtime package нажал кнопку release, но при компиляции пишет что нет каких-то фалов с расширение...

10
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
19.12.2012, 00:40
Узнать бы сначала, что за ошибка и в какой строке.
0
12 / 5 / 2
Регистрация: 13.02.2011
Сообщений: 51
19.12.2012, 00:44  [ТС]
Цитата Сообщение от ice_man Посмотреть сообщение
НО, пи попытке добавления текста в едит, выскакивает ошибка..
First chance exception at $751DC41F. Exception class EOleException with message '"Range" не является свойством'. Process Project1.exe (4848)
+ ко всему, файлы с расширение docx находяться только в главной папке, т.е. поиск во всех подкаталогах не осуществляется.
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
19.12.2012, 00:56
Ну может как и написано '"Range" не является свойством? А разве ты ищешь по подкатологам?
0
12 / 5 / 2
Регистрация: 13.02.2011
Сообщений: 51
19.12.2012, 01:00  [ТС]
Так со считыванием разобрался, надо испольщовать olefunction.

Я хотел сделать поиск по всем папкам и подкаталогам.. но что-то не очень вышло.
Есть идеи как переделать?
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
19.12.2012, 02:13
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Procedure ScanDir(Dir:string);   
var SearchRec:TSearchRec;   
begin  
if Dir<>'' then if Dir[length(Dir)]<>'\' then Dir:=Dir+'\';   
if FindFirst(Dir+'*.*', faAnyFile, SearchRec)=0 then  
repeat  
if (SearchRec.name='.') or (SearchRec.name='..') then continue;   
if (SearchRec.Attr and faDirectory)<>0 then  
ScanDir(Dir+SearchRec.name) //we found Directory: "Dir+SearchRec.name"   
else  
Showmessage(Dir+SearchRec.name); //we found File: "Dir+SearchRec.name"   
until FindNext(SearchRec)<>0;   
FindClose(SearchRec);   
end;   
procedure TForm1.Button1Click(Sender: TObject);   
begin  
ScanDir('c:');   
end;
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
19.12.2012, 04:12
Программа "Чистка диска"
0
12 / 5 / 2
Регистрация: 13.02.2011
Сообщений: 51
19.12.2012, 18:49  [ТС]
Спасибо!
Сделал вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TForm1::Button1Click(TObject *Sender)
{ ListBox1->Clear();
String path;
SelectDirectory(L"", L"", path,TSelectDirExtOpts() << sdNewUI << sdNewFolder, 0);
 
TStringList *sp =new TStringList;
FindFiles(sp, path);
for(int i=0;i<sp->Count;i++)
{
     if (sp->Strings[i].Pos(".")== false)
     {
      FindFiles(sp,sp->Strings[i].c_str());
     }
}
delete sp;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void FindFiles(TStringList *sp, AnsiString DirName)
{
TSearchRec sr;
if (DirName.Length())
 {
 if (!FindFirst(DirName+"\\*.docx",faAnyFile,sr))
 do
  {
  if (!(sr.Name=="." || sr.Name==".."))
   if (((sr.Attr & faDirectory) == faDirectory ) ||
   (sr.Attr == faDirectory))
    {
    FindFiles(sp, DirName+"\\"+sr.Name);
    }
    else
    {
    sp->Add(DirName+"\\"+sr.Name);
    Form1->ListBox1->Items->Add(DirName+"\\"+sr.Name);
      }
  }
 while (!FindNext(sr));
 FindClose(sr);
 }
}
При поиске файлов с расширением docx, программа находит все файлы в заданной папке и всё.
При поиске файлов без заданного расширения все отлично и у нас в листбоксе выводит абсолютно все файлы имеющиеся в каталоге и подкаталогах.

В чем ошибка? Просто нужно искать файлы по всем каталогам и подкаталогам с расширением docx или doc

Добавлено через 51 минуту
C++
1
2
3
4
if (sr.Name.Pos(".docx"))
    {
    Form1->ListBox1->Items->Add(DirName+"\\"+sr.Name);
    }
Можно конечно сделать вот так на 18 строчке
Но это не вариант
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
19.12.2012, 22:46
и почему это не вариант? гадать всем лень
0
12 / 5 / 2
Регистрация: 13.02.2011
Сообщений: 51
19.12.2012, 22:57  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
и почему это не вариант? гадать всем лень
не вариант потому что, сначала происходит поиск абсолютно всех файлов. А потом еще и проверяет на docx и doc.
Не проще ли сразу искать файлы с заданным расширением, чтобы снизить нагрузку и ускорить алгоритм?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
19.12.2012, 23:06
в любом случае происходит просмотр абсолютно всех файлов, и если расширение удовлетворяет условию, с файлом что-нибудь делается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.12.2012, 23:06
Помогаю со студенческими работами здесь

Перемещение всех файлов с заданным расширением
Нужен BAT скрипт который делает следующие: 1.Заходит в папку А 2.Вырезает все файлы по формату(к примеру все картинки формата .jpg) ...

Поиск всех файлов с заданным расширением и добавление их в массив
Здравствуйте, уважаемые программисты! Существует задача, найти имена всех файлов, с расширением lua, и добавить их в массив. Это нужно для...

Вывести на экран имена всех файлов с заданным расширением
1.Вывести на экран имена всех файлов с заданным расширением, файлы размещены на диске Х:

Список файлов из указанного каталога и с заданным расширением записать в файл
Написать скрипт, выводящий в файл (имя файла задаётся пользователем в качестве первого аргумента командной строки) имена всех файлов с...

Ошибка при получении путей всех файлов с заданным расширением
Значит пишу программку, которая будет получать полные пути к файлам с заданным расширением, но видимо доходит до папки сис админа, которая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru