Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с текстом! HTML & TXT, как искать, заменять в тексте 
V
    Опции темы
h2o
Дата 16.1.2006, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Кто когда-нибудь видел детализацию счёта мобильного номера (МТС, Мегафон и т.д). Там идет HTML фаил!
Дак вот, хотелось бы сделать фильтрацию номеров в этом файлике, тоесть удалять из детализированного списка номера, тоесть звонки по работе, которые занесены в базу фильтра, и пересчитывать сумму, чтобы работа оплачивала звонки по работе, а я платил только за личные.
Кто сталкивался - знает, как это мучительно сидеть и разбираться со звонками в конце месяца, вот я и подумал, а как автоматизировать процесс???

Даже не знаю, с чем лучше работать с HTML или TXT?
Например в ТХТ:
Код

ВЕДОМОСТЬ ВЫЗОВОВ В СЕТИ СЕВЕРО-ЗАПАДНОГО ФИЛИАЛА ОАО МЕГАФОН
Телефон 2584444 Счет 2567896        //искать нужно сначала эту строку, чтобы понять что мой счёт это!
Дата 01-12-2005Дата, ВремяНомер, электр.адр.,точка 
            доступаКодТипСек./Кб.Тарифицир.отрезок врем*/Объем данныхСтоим.
            11/30 10:30792115648941390 мин. 39 сек. 0.05
            11/30 13:34792146581661981 мин. 38 сек. 0.12
            11/30 14:25792146581661100 мин. 10 сек. 0.01
            11/30 14:37792165456481270 мин. 27 сек. 0.03
            Итого0.21
тоесть по нормальному так, хотя в тхт не форматировано, и надо с неформатированным текстом работать
            11/30 10:30 79211564894 1390 мин. 39 сек. 0.05 //по работе
            11/30 13:34 79214658166 1981 мин. 38 сек. 0.12 //по работе
            11/30 14:25 79214658166 1100 мин. 10 сек. 0.01 //мой личный звонок
            11/30 14:37 79216545648 1270 мин. 27 сек. 0.03 /по работе
            Итого 0.21

и вот те звонки что по работе мне надо исключить, и пересчитать сумму ИТОГО.
А исключаемые номера например в списке TStringList(или где лучше?)

Ну вот, впрочем всё обьяснил, как можно такое сделать? ТОесть как искать в файле, либа в TStringList, в котором загружен нужный фаил???
Как удалить ненужную запись, и произвести расчёт, есть идеи?
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Alexeis
Дата 16.1.2006, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Все очень просто файл загружается в мемо затем ищется слово "телефон " 7 символов после номер
дальше пропускаются две строки и данные читаются построчно до слова "итого."


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Петрович
Дата 16.1.2006, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Обычный поиск регулярного выражения с выделением подстрок. Можно делать на каком-нибудь скрипте поддерживающем регулярные выражения.
А можно воспользоваться напрмер редактором EmEditor. Он имеет встроенную поддержку скриптовых языков + поддержку полных регулярных выражений. К нему есть руссификатор.
А можно и на Delphi, используя библиотеку для работы с регулярными выражениями, например TRegExpr (поищи, адрес сайта не помню).

Можно конечно и без регулярных выражений, как описал alexeis1, просто с регулярными выражениями это проще, быстрее, а главное более универсально. При любых изменениях формата входного файла в большинстве случаев будет достаточно лишь изменить одно-два выражения.



--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
h2o
Дата 16.1.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



alexeis1 ну как-то проще в TSTRINGLIST всё загрузить, но вот как искать, я даже понятия не имею!

Петрович TRegExpr немогу найти сам компонент, тока его описания. ОФФ сайт закрыт!
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Alexeis
Дата 16.1.2006, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



h2o компонент есть в torry.net
Добавлено @ 17:27
для поиска строки в строке есть функция pos(substr, mainstr) = первое появление в mainstr.И так построчно.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
h2o
Дата 16.1.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Нашёл компонент! Эх, теперь бы разобратьсяю...
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Guedda
Дата 17.1.2006, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


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

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



Зачем пользоваться сторонними компонентами?
Все очень просто через TStringGrid прекрасно сделать.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Alexeis
Дата 17.1.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
h2o
Дата 17.1.2006, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



alexeis1 в TRegExpr я не понял что конкрутно для меня надо... ну может разберусь ещё
Цитата(alexeis1 @ 16.1.2006, 17:25 Найти цитируемый пост)

для поиска строки в строке есть функция pos(substr, mainstr) = первое появление в mainstr.И так построчно

...а это к чему относится.. к TRegExpr?
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Romikgy
Дата 17.1.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(h2o @ 17.1.2006, 12:09 Найти цитируемый пост)
...а это к чему относится.. к TRegExpr?

Это если не юзать ТРегЭкспр smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Alexeis
Дата 17.1.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



h2o нет я имел ввиду как искать "ручками" а с TRegExpr я тоже не умею работать и подробного описания ни где нет smile

Это сообщение отредактировал(а) alexeis1 - 17.1.2006, 13:23


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Romikgy
Дата 17.1.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Имхо это лучше smile

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  TPerlRegEx.part1.rar 112,30 Kb


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romikgy
Дата 17.1.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



+ вторая часть архива

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  TPerlRegEx.part2.rar 70,65 Kb


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Бывалый
*


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

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



Romikgy а как с ним работать? там не написано! есть примеры поиска текста где, или у тебя?
alexeis1 я тоже хотел ручками... только незнаю как. я вообще думал посимвольным просмотром.. а как такое
11/30 14:37792165456481270 мин. 27 сек. 0.03
??? я незнаю. мне надо из этой строки выделить номер 79216545648, взять сумму 0.03, вычесть её из ИТОГО, запомнитьт и затереть всю строку, и так далее. Ну вообщем я просто принципов не понимаю. Знаний нехватает, а примеров не нашёл в интете, а я то был уверен что это уже делали!

--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Romikgy
Дата 17.1.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Дык хелп там есть???
ЗЫ прицепи плз два файла:
1. исходный файл
2. так как хошь видеть все
(если это не секрет) а там будем на посмотреть


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Alexeis
Дата 17.1.2006, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Проще сразу строкой Например нашли позицию двоеточия
c := pos(':', STRINGLIST1.Strings[i]);

далее два символа время + 1 пробел, дальше нужное число из 11 символов значит
s := Copy(STRINGLIST1.Strings[i], c + 2 + 1, 11);
это строчное представление

var
b : int64; будет число так как в integer не поместится

b := strToInt64(s);

вот он заветный номер

далее ищем слово "сек."
c := pos('сек.', STRINGLIST1.Strings[i]);

и проводим анологичные операции (кстати в фаронове turbo pascal)
хорошо описаны функции работы со строками все годится идля делфи


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Romikgy
Дата 17.1.2006, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(alexeis1 @ 17.1.2006, 13:37 Найти цитируемый пост)

var
b : int64; будет число так как в integer не поместится

b := strToInt64(s);

Зачем? Можно просто строкой хранить.


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Alexeis
Дата 17.1.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата

Зачем? Можно просто строкой хранить.

так нужно складывать и делить smile


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
h2o
Дата 17.1.2006, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Что то я долго отвечал но ...не, прога- не секрет, я вообще потом работу хотел выложить на "Арсенал форумистов", может пригодится кому! Ну я вроде понятно в начале темы обьяснил... попробую ещё разок.. подробнее..
Детализированный счёт приходит в html на мыло. Для удобства работы сохраняем его как тхт фаил в котором:
Код

// куча строк неопределенного размера (всегда по разному)
// потом идет то что нужно:
ВЕДОМОСТЬ ВЫЗОВОВ В СЕТИ СЕВЕРО-ЗАПАДНОГО ФИЛИАЛА ОАО МЕГАФОН
Телефон 2584444 Счет 2567896        //искать нужно сначала эту строку, чтобы понять что мой счёт это!
Дата 01-12-2005Дата, ВремяНомер, электр.адр.,точка 
            доступаКодТипСек./Кб.Тарифицир.отрезок врем*/Объем данныхСтоим.
            11/30 10:30792115648941390 мин. 39 сек. 0.05
            11/30 13:34792146581661981 мин. 38 сек. 0.12
            11/30 14:25792146581661100 мин. 10 сек. 0.30
            11/30 14:37792165456481270 мин. 27 сек. 0.03
            Итого0.50

нужно сначала найти нужный номер в тхт (например "Телефон 2584444 Счет 2567896" ), причем условием поиска задавать нужно Счет 2567896 (т.к. в одном файле отчёта может быть несколько номеров счетов, и такое нужно будет с каждым заданным проделать).
Потом есть список номеров телефонов, которые надо отфильтровать... например есть в этом списке номер (3я строка - 79214658166). мы его фильтруем, удаляя всю строку, НО! запомнив цифры в конце... чтобы потом их вычесть из ИТОГО
и потом вывести результат ввиде хоть чего... месага или файла... это не суть важно... тоесть в конце после фильтрации мы должны получить типа:
Код

//нет текста над этим
ВЕДОМОСТЬ ВЫЗОВОВ В СЕТИ СЕВЕРО-ЗАПАДНОГО ФИЛИАЛА ОАО МЕГАФОН
Телефон 2584444 Счет 2567896   
            11/30 10:30792115648941390 мин. 39 сек. 0.05
            11/30 13:34792146581661981 мин. 38 сек. 0.12
            11/30 14:37792165456481270 мин. 27 сек. 0.03
            Итого0.20 //её мы пересчитываем с учётом удаленных данных


исходники набросанной проги могу прикрепить...

Это сообщение отредактировал(а) h2o - 17.1.2006, 15:57

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  ______________________.rar 32,27 Kb
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Romikgy
Дата 17.1.2006, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(h2o @ 17.1.2006, 14:50 Найти цитируемый пост)

НО! запомнив цифры в конце... чтобы потом их вычесть из ИТОГО

А не проще заново сумировать?

//
Алгоритм таков:
Находим Счет 2567896 (или нужный) и копируем допустим в стриггрид, две строки выше счета и со счетом,
далее проверяем строку идущую ниже, на присутствие номера (как в 3 строке у тя), нет копируем, плюс берем последнее чило после "сек. " и добовляем к промеж. переменной ( sum: float),
далее след. строка
нашли в строке "итого" Заменяем эту строку своей "Итого "+вывод sum


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
h2o
Дата 24.1.2006, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вообщем всё получилось! Всем спасибо за помощь. все операции написал ручками, без компонентов.
Если кому нужнена программа фильтрации номеров телефонов, выкладываю тут!

Это сообщение отредактировал(а) h2o - 24.1.2006, 13:18

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  MTF.rar 67,84 Kb
--------------------
Я нифига не знаю! мало что понимаю! Помогите тупому... У меня стоит D7!
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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