![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Редактирование txt файла |
|
C/C++ - [решено] Редактирование txt файла
|
Пользователь Сообщения: 64 |
Искал на просторах форума подобные темы, нашёл несколько, но так и не смог решить проблемы, поэтому задам вопрос конкретно для своего примера.
Программирую на Builder C++ 6, точнее учусь сейчас. Задача такова: есть файл test.txt, в нём всякий текст, комментарии, и слова в скобках []. Фрагмента из txt: [outfit_base] ; delete full_scale_icon next update- obsolete, use full_icon_name instead !!! ; [old_base] устаревшее значение ;{ парамметры необходимые для нормальной работы в базовом режиме [base] } additional_inventory_weight = 0 ; +max_walk_weight additional_inventory_weight2 = 0 ; +40 kg full_icon_name = npc_icon_without_outfit Как видите комментарий идёт после ";" и внутри фигурных скобок ;{ тута } (причём первая фигурная скобка со знаком ";"). Нужно вывести в отдельный exit.txt файл всё что находится в квадратных скобка [], повторюсь: при обработке комментарии не учитывать, то есть [old_base], [base] и прочее не выводить. Заранее спасибо ![]() |
|
Отправлено: 20:28, 26-11-2011 |
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать Starter1, И в чем проблема?
Рассмотрите варианты расстановки комментариев, определите логические условия определяющие начало и конец комментария. Точно также сделайте для слов в квадратных скобках. Анализируйте текст с заданными условиями. Делов то. |
------- Отправлено: 20:56, 26-11-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 64
|
Профиль | Отправить PM | Цитировать lxa85,
Цитата:
|
|
Отправлено: 22:30, 26-11-2011 | #3 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Так пойдёт?
void __fastcall TForm1::Button1Click(TObject *Sender) { for(int i = 0; i < Memo1->Lines->Count; i++){ if(Memo1->Lines->Strings[i].Pos(";") ) if(Memo1->Lines->Strings[i].Pos(";") == 1) continue; //Memo2->Lines->Add(Memo1->Lines->Strings[i]); else Memo2->Lines->Add(Memo1->Lines->Strings[i].SubString(1, Memo1->Lines->Strings[i].Pos(";")-1)); } } |
------- Отправлено: 02:22, 27-11-2011 | #4 |
Пользователь Сообщения: 64
|
Профиль | Отправить PM | Цитировать Drongo, Попробовал, странный вывод. Выводит не все строки, даже те в которых нет ";".
Немного переделал: TStringList *lst = new TStringList; TStringList *lstReplace = new TStringList; String str = ";"; String tempStr; lst->LoadFromFile(ExtractFilePath(Application->ExeName) + "test.ltx"); for(int j = 0; j < lst->Count; j++){ if(lst->Strings[j].Pos(str)){ lstReplace->Add(lst->Strings[j].SubString(1, lst->Strings[j].Pos(str)-1)); } else lstReplace->Add(lst->Strings[j]); } lstReplace->SaveToFile(ExtractFilePath(Application->ExeName) + "Test.txt"); delete lst; delete lstReplace; Close(); ![]() |
|
Последний раз редактировалось Starter1, 27-11-2011 в 11:19. Причина: Переделал код Отправлено: 11:12, 27-11-2011 | #5 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Starter1, Я проверил на тексте, пример которого вы привели, там отработал, выводит только строки в которых нет ; или строку до ;
|
------- Отправлено: 14:41, 27-11-2011 | #6 |
Пользователь Сообщения: 64
|
Профиль | Отправить PM | Цитировать Drongo, Наверное ошибка из-за того что я не использую Memo а использую List для вывода в файл. Ещё такой вопрос. Я так понял (1, lst->Strings[j].Pos(str)-1)) это обработка строки, 1 и -1 это отступы от краев, 1 сначала а -1 с того места где стоит ";", то есть с Pos(str). Можно ли сделать подобное только от ";" и до конца то есть оставлять сам комментарий?
|
Отправлено: 15:11, 27-11-2011 | #7 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 17:46, 27-11-2011 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Редактирование txt в GUI | koc9kaca | AutoIt | 3 | 05-07-2011 22:53 | |
CMD/BAT - [решено] Созд.*.txt по имени файла, с перемещением *.txt и файла в папку с именем файла. | OSArev | Скриптовые языки администрирования Windows | 2 | 30-01-2011 11:58 | |
Разное - редактирование SchedLgU.txt | vovnet | Хочу все знать | 0 | 02-02-2010 00:36 | |
[решено] редактирование файла | .:TimoXa:. | AutoIt | 4 | 27-03-2009 08:29 | |
Редактирование EXE файла FoxPro | Giorgievich | Программирование и базы данных | 7 | 21-08-2004 22:48 |
|