Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2011, 20:38   #1
salwator
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 31
По умолчанию посимвольное считывание

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

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"

AnsiString diskname,p,key=""; // переменая- буква диска
void ListFiles(AnsiString path,TStrings* List)
{
TSearchRec sr; // структура, которая хранит информацию о файле.
if (FindFirst(path+"*.*", faAnyFile, sr) == 0) //функция,начинающая поиск файлов
{
do
{
if (sr.Attr & faDirectory) // если атрибут файла-директория(папка)
{
if (sr.Name!=".") // если название папки не "."
if (sr.Name!="..") // если название папки не ".."
{
ListFiles(path+sr.Name+"\\",List);// Рекурсивный вызов
}
}
else
{
AnsiString Ext=ExtractFileExt(sr.Name).UpperCa se();
for(int i=0;i<p.Length();i++) {
if (p[i]!=',') key=key+p[i];
else{ if (Ext==key) List->Add(sr.Name); // добавляем файлы в список
key="";
};
};
}
}
while (FindNext(sr) == 0); // функция, продолжающая поиск файлов
FindClose(sr); // функция завершение поиска, освобождение памяти
}
Application->ProcessMessages(); // чтобы не зависала форма
}
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
p=Edit1->Text;
diskname = DriveComboBox1->Text.SubString(1,2);// копируем букву диска
ListFiles(diskname+"\\",ListBox1->Items);
}
//---------------------------------------------------------------------------
salwator вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посимвольное сравнение двух Memo iKarma Общие вопросы Delphi 8 21.10.2011 15:07
посимвольное удаление из text GaLiof Помощь студентам 0 30.01.2011 16:52
посимвольное сравнение текста Анастасия91 Помощь студентам 1 11.12.2010 08:06
Посимвольное считывание из файла. Проблема кодировки. Кириллица в консоли. SrgGld Общие вопросы C/C++ 0 16.11.2010 20:34
посимвольное считывание DeFace Общие вопросы C/C++ 4 05.04.2009 23:11