Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
1

Поиск по текстовому файлу...

12.06.2009, 14:03. Показов 1697. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!

Как организовать поиск по текстовому файлу, формат записи в файле такой(телефонный справочник):

Номер,,,Инициалы,,,Адрес,,,
Искать по любому ключевому слову - номеру, имени и т. д....

Результаты нужно выводить в Memo.

Заранее благодарен!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2009, 14:03
Ответы с готовыми решениями:

Поиск по текстовому файлу
Здравствуйте! Очень прошу помочь со следующим заданием (насколько я поняла, это должен быть поиск...

Поиск по текстовому файлу
Добрый день! Я новичок в С#. Есть текстовый файл, состоящий из множества блоков вида: #BTS2:1...

Поиск по текстовому файлу
Привет, кто может подсказать, как сделать поиск по файлу, если искомое слово вводится в Edit, а вся...

поиск по текстовому файлу
Прошу помощи.. Нужно делать поиск по текстовому файлу следующего формата.. Input Data = 55 8B...

14
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
12.06.2009, 14:28 2
ну это несложно, как вараинт, закачиваете текстовик себе в память полностью или блоками, например, в TStringList построчно, поиск организуете как по обычной строке, а рузельтат уже выводите куда вам надо... хотя ИМХО лучше перегнать текстовик в какую-нить простенькую базу данных и работать уже с ней, так проще будет... хотя в адо можно загрузить и текстовый файл, форматированный понятное дело, или csv... тут решений просто масса, все зависит от полета вашей фантазии
0
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
12.06.2009, 14:36  [ТС] 3
Если возможно, можно пример, мне так легче разобраться...
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
12.06.2009, 14:41 4
а что не понятно? я просто подал идею, как проще сделать, покажите, что у вас получилось, что конкретно вы решили делать, будем разбираться?
0
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
12.06.2009, 15:07  [ТС] 5
Я хочу написать телефонный справочник, написал проверку существования файла:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
String SubSTR, s;
fstream f;
fstream file;
if(Key == 13)
{
f.open("C:\\Documents and Settings\\VtaMC\\Desktop\\telphoneee.txt");
if(f != NULL)
{
            do
            {
 
            }
            while(EOF);
}
else
ShowMessage("Файл не найден!!!");
};
А вот как написать обработку текста я не знаю, не силён в этом...
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
12.06.2009, 15:13 6
чтобы проверить наличие файла достаточно использовать функцию FileExists, а чтобы считать содежимое файла в объекте класса TStringList вызвать метод LoadFromFile, читайте маны, это помогает...
0
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
12.06.2009, 15:15  [ТС] 7
Хорошо, но главное как написать функцию поиска?
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
12.06.2009, 15:22 8
проходитесь в цикле for по считанным строкам и? используюя функцию Pos, ищете те строки, куда входит критерий поиска - вот и все
0
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
12.06.2009, 15:59  [ТС] 9
А можно пример, просто я никогда не писал подобные программы.....
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
12.06.2009, 16:04 10
что-то подобное:
C++
1
2
3
4
5
  for(int i = 0; i < list->Count; i++){
    if(list->Strings[i].Pos(Edit1->Text)){
      //нашли и пишем куда надо...
    }
  }
1
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
12.06.2009, 16:27  [ТС] 11
Спасибо! Заработал вот такой вариант:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
fstream f;
if(Key == 13)
{
f.open("C:\\Documents and Settings\\VtaMC\\Desktop\\telphoneee.txt");
f.close();
if(f != NULL)
{
list->LoadFromFile("C:\\Documents and Settings\\VtaMC\\Desktop\\telphoneee.txt");
    Memo1->Clear();
    for(int i = 0; i < list->Count; i++)
    {
        if(list->Strings[i].Pos(Edit1->Text))
        {
        Memo1->Lines->Append(list->Strings[i]);
        };
  };
}
else
ShowMessage("Файл не найден!!!");
};
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
12.06.2009, 16:34 12
подправлю, чтобы уже все красиво было и лишнее убрать не помешает:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
AnsiString fname = 
"C:\\Documents and Settings\\VtaMC\\Desktop\\telphoneee.txt";
if(Key == 13)
{
if(FileExists(fname))
{ 
    list->LoadFromFile(fname);
    Memo1->Clear();
        for(int i = 0; i < list->Count; i++)
        {
                if(list->Strings[i].Pos(Edit1->Text))
                {
                Memo1->Lines->Append(list->Strings[i]);
                };
  };
}
else
ShowMessage("Файл не найден!!!");
};
2
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
12.06.2009, 16:39  [ТС] 13
И два вопроса: как задать минимальное число вводимых символов. Например чтобы меньше 3 нельзя было ввести? И как заменить ,,, на пробелы?
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
12.06.2009, 17:15 14
ну перед запуском поиска можешь проверять кол-во введенных символов:
C++
1
2
3
4
if(Edit1->Text.Length() <= 3){
  ShowMessage("Error");
  return;
}
а замену сделать можно так:
C++
1
2
3
4
5
6
7
AnsiString txt = list->Strings[i];
int Pos = 0;
while((Pos = txt.Pos(",,,")) != 0){
  txt.Delete(Pos, 3);
  txt.Insert(" ", Pos);
}
Memo1->Lines->Append(txt);
1
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
12.06.2009, 17:41  [ТС] 15
Всё работает, спасибо!!!
0
12.06.2009, 17:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2009, 17:41
Помогаю со студенческими работами здесь

Реализовать поиск по текстовому файлу
В общем пытаюсь написать программу. Суть такая. Есть форма для заполнения. 6 EditControl и 1...

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

Файл: Поиск по текстовому файлу
как сделать чтобы мы вводим текст а пограмка ищет совпадения с словами которые есть в текстовику? ...

Фильтрация структуры (поиск по текстовому файлу)
Возник вопрос, как реализовать фильтрацию структуры? То есть, пишу консоли начало слова, в итоге...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru