Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Поиск и замена текста

Ответить
Настройки темы
C/C++ - [решено] Поиск и замена текста

Аватара для Simpler

Новый участник


Сообщения: 13
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: Simpler
Дата: 15-11-2010
Здравствуйте.

Нужна помощь в поиске и замене текста в текстовом файле,желательно готовый пример.
Есть текстовый файл с именем "Log.txt" нужно найти и заменить текст который написан после слова "User" - Слово "User" в данном текстовом файле одно.
Текст на который мы будем заменять нужно взять из edit,желательно бы не загружать текстовый файл в Memo или прочее компоненты.

У меня установлен "C++Builder 2010" C++ учить начал не так давно,если будите что то объяснять пишите по проще так как я в нем пока ноль.
За ранее вам благодарен.

Отправлено: 10:38, 15-11-2010

 

Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Simpler, Я написал, но по-дилетантски. Понадобятся компоненты: Edit, Button. Программа грузит файл Log.txt в список TStringList, дальше примитивно обрабатывает и сохраняет результат в файл Test.txt

Код: Выделить весь код
// Обрабатываем файл по нажатию кнопки---------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   TStringList *lst = new TStringList; // Список, куда мы грузим "Log.txt"
   TStringList *lstReplace = new TStringList; // Временный список
   String str = "User"; // Слово которое мы ищем
   String tempStr; // Формируемая строка в которой найденое слово "User" + текст из Edit
   lst->LoadFromFile(ExtractFilePath(Application->ExeName) + "Log.txt"); // Загружаем файл

   for(int i = 0; i < lst->Count; i++){
      if(lst->Strings[i].Pos(str)){
         for(int j = 0; j < i; j++){
            lstReplace->Add(lst->Strings[j]);
           }
         tempStr = lst->Strings[i].SubString(1, lst->Strings[i].Pos(str) + str.Length());
         tempStr += " " + Edit1->Text;
         lstReplace->Add(tempStr);
         break;
        }
     }
   lstReplace->SaveToFile(ExtractFilePath(Application->ExeName) + "Test.txt");

   delete lst;
   delete lstReplace;
}
//---------------------------------------------------------------------------

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:40, 15-11-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Simpler

Новый участник


Сообщения: 13
Благодарности: 1

Профиль | Отправить PM | Цитировать


Спасибо вам большое,у меня только один вопрос.. Как в C++ мне указать путь до файла?

В Delphi "C:\Log.txt" - в C++ написал так же,программа закричала что нет файл рядом с нашим исполняемым файлом.

И еще,не могли бы вы дописать проверку? Что бы программа смотрела,если есть.. загружаю.
Если нет,напишет что файл отсутствует.

За ранее благодарен.

Отправлено: 22:57, 15-11-2010 | #3


Аватара для ganselo

Старожил


Сообщения: 232
Благодарности: 90

Профиль | Сайт | Отправить PM | Цитировать


Цитата Simpler:
В Delphi "C:\Log.txt" - в C++ написал так же,программа закричала что нет файл рядом с нашим исполняемым файлом. »
"C:\\log.txt". Символ \ является служебным в C++. Поэтому его нужно экранировать.

-------
К величайшему сожалению "история учит нас тому, что она ничему не учит".

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:52, 16-11-2010 | #4


Аватара для Simpler

Новый участник


Сообщения: 13
Благодарности: 1

Профиль | Отправить PM | Цитировать


Спасибо.

С проверкой кто поможет или там можно использовать FileExists - ?
Или посоветуйте что почитать а то купил книжку себе а там чушь а не C++
Зря только 500р отдал за нее >_<

\\
Странно,почему не получается указать пусть до файла?
C:\\Program Files\Programma\test\Test.txt - Выдает ошибку + пусть до файла почему то слитно в ошибке пишет.

Последний раз редактировалось Simpler, 16-11-2010 в 08:19.


Отправлено: 08:05, 16-11-2010 | #5


В Поисках Истины


Сообщения: 802
Благодарности: 135

Профиль | Отправить PM | Цитировать


Цитата Simpler:
пусть до файла почему то слитно в ошибке пишет »
Как уже сказал ganselo, \ -является служебным символом, т.е. там где нужно его использовать необходимо прописывать его \\.
Ваш путь будет выглядить :
Цитата:
C:\\Program Files\\Programma\\test\\Test.txt »

-------
foreach(short w in new short[] {73,3,79,83,90,79,78,69}){
Console.Write((char)w);
}


Отправлено: 08:34, 16-11-2010 | #6


Аватара для Simpler

Новый участник


Сообщения: 13
Благодарности: 1

Профиль | Отправить PM | Цитировать


Синтаксическая ошибка в имени файла,имени папки или метки тома.. Вот такую ошибку получаю.
(Когда файл лежит рядом с программой все нормально,только косяк..

Если к примеру такой текст:
User: TEST
БЛА-БЛА: TEST

то последнюю строчку программа сносит.. >_<
И опять же,когда первый раз тестировал код нормально все было.

Отправлено: 08:44, 16-11-2010 | #7


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата Simpler:
последнюю строчку программа сносит.. >_< »
Так у вас же в задании сказано.
Цитата Simpler:
нужно найти и заменить текст который написан после слова "User" - Слово "User" в данном текстовом файле одно.»
Я понял так что нужно заменить весь текст после слова User
Цитата Simpler:
С проверкой кто поможет или там можно использовать FileExists - ? »
Код: Выделить весь код
...
if(FileExists("C:\\Log.txt")){
      lst->LoadFromFile("Log.txt");
...
Давайте вы дадите текст который у вас есть в файле Log.txt и код который у вас есть, посмотрим.

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:54, 17-11-2010 | #8


Аватара для Simpler

Новый участник


Сообщения: 13
Благодарности: 1

Профиль | Отправить PM | Цитировать


Вопрос решен. Большое спасибо "Drongo" за помощь. Чуть позже выложу полный код,может кому он пригодится.

Отправлено: 16:41, 17-11-2010 | #9


Аватара для Merboot

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Может кто нибудь поможет переписать данный код что бы последнюю строчку программа не сносила?
{У меня кстати тоже ошибка в пути до файла.}
Указал путь до папки "C:\\Program Files\\Test.txt" а программа почему то ищет файл рядом с собой.

Отправлено: 11:43, 29-11-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Поиск и замена текста

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Поиск и замена текста ajakzs Скриптовые языки администрирования Windows 18 08-08-2013 16:10
Поиск текста в txt Centrinar AutoIt 5 23-07-2010 19:59
Поиск текста и выполнение действий!!! Giena22 AutoIt 5 23-09-2009 20:21
C/C++ - Поиск текста в файлах student_po Программирование и базы данных 6 04-09-2009 23:33
Офис и Текст - Замена текста Котяра Программное обеспечение Windows 1 29-09-2008 13:51




 
Переход