Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подсчёт кол-ва файлов в дирректории 
V
    Опции темы
RDC
Дата 7.6.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 26.1.2008

Репутация: нет
Всего: нет



Здравствуйте!
В директории есть файлы: 0.html 1.html 2.html 3.html и.т.д.
Нужно подсчитать хи кол-во. Я делал это следущим кодом:
Код

int KolFiles()
{
        AnsiString dir="\\\\"+frmClient->IdTCPClient1->Host+"\\files\\";
        int i;
        for(i=0; (FileOpen(dir+IntToStr(i)+".html", fmOpenRead))!=-1; i++);
        return i-1;
}

Но потом программа не хочет открывать эти файлы. Я подозреваю что это из-за FileOpen.
Как можно по другому подсчитать кол-во файлов?
--------------------
Живопись
PM MAIL   Вверх
TaNK
Дата 7.6.2008, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(RDC @ 7.6.2008,  14:39)
Здравствуйте!
В директории есть файлы: 0.html 1.html 2.html 3.html и.т.д.
Нужно подсчитать хи кол-во. Я делал это следущим кодом:
Код

int KolFiles()
{
        AnsiString dir="\\\\"+frmClient->IdTCPClient1->Host+"\\files\\";
        int i;
        for(i=0; (FileOpen(dir+IntToStr(i)+".html", fmOpenRead))!=-1; i++);
        return i-1;
}

Но потом программа не хочет открывать эти файлы. Я подозреваю что это из-за FileOpen.
Как можно по другому подсчитать кол-во файлов?

попробуй
FindFirst
FindNext
Код

TSearchRec inf;
      int i = 0;
      if(FindFirst("*.html",faAnyFile,inf)==0)
       {
        do
           {
             
             i++ ;
            }

        while(FindNext(inf)==0);
       }
   FindClose(inf);
   Label1->Caption = i;



--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Rififi
Дата 7.6.2008, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 1
Всего: 36



Цитата(RDC @  7.6.2008,  14:39 Найти цитируемый пост)
Как можно по другому подсчитать кол-во файлов?

C++ поиск файлов


PM MAIL   Вверх
Rrader
  Дата 7.6.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 13
Всего: 191



TaNK, нет фильтрации "." и ".."

Код

int GetFileCount(const char *Path)
{
  int Count = 0;
  TSearchRec SR;
  int Index = FindFirst(Path, faAnyFile, SR);
  __try
  {
    while(!Index)
    {
       if (!(SR.Attr & faDirectory) && (SR.Name != ".") && (SR.Name != "..")) {
          Count++;
      }
      Index = FindNext(SR);
    }
  }
  __finally
    {
      FindClose(SR);
    }
    return Count;
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  ShowMessage(IntToStr(GetFileCount("C:\\WINDOWS\\*.html")));
}


Это сообщение отредактировал(а) Rrader - 7.6.2008, 16:04


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
fish9370
Дата 7.6.2008, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 1
Всего: 1



Цитата(Rrader @ 7.6.2008,  16:03)
TaNK, нет фильтрации "." и ".."

а зачем фильтрация, если у него в шаблоне задано "*.html" ? они там и не появятся..

Это сообщение отредактировал(а) fish9370 - 7.6.2008, 23:01


--------------------
undefined
PM MAIL WWW ICQ   Вверх
RDC
Дата 8.6.2008, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 26.1.2008

Репутация: нет
Всего: нет



Всем спасибо за ответы.

TaNK, не понял, куда в твоём примере передавать директорию.

Rrader, спасибо, твоя функция работает на ура!
--------------------
Живопись
PM MAIL   Вверх
rrrFer
Дата 8.6.2008, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: нет
Всего: 1



RDC
можно так:
Код

using namespace std;
int main(){
    system("dir D:\programs /a:-d | find \".\" /c && pause");
}

только неправильно посчитает если файл имеет в имени без расширения символ точка
PM MAIL WWW ICQ   Вверх
TaNK
Дата 9.6.2008, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(RDC @ 8.6.2008,  20:28)
Всем спасибо за ответы.

TaNK, не понял, куда в твоём примере передавать директорию.

Rrader, спасибо, твоя функция работает на ура!

Код

 if(FindFirst("Report\\*fr3*",faAnyFile,inf)==0)


Это сообщение отредактировал(а) TaNK - 9.6.2008, 08:05


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0755 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.