| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Парсинг txt файла |
| Автор: pomogite 2.4.2010, 06:00 | ||
Здравствуйте, есть текст в мемо примерно такой -
Как мне скопировать текст "Nokia 6600" в Memo 2? Если есть ещё куча других тэгов и id=588 естественно меняется, то есть нужно вырезать в мемо2 названия всех моделей... |
| Автор: Grag 2.4.2010, 08:30 |
| Я бы сделал так: В цикле по всем строкам мемо брал строку, определял позицию вхождения подстроки "<a href=", затем с этой позиции определял позицию закрывающей скобки ">". запоминал ее, затем определял позицию следующей открывающей скобки "<", запоминал и ее. Все что между этими позициями копировал в мемо2. Это и будут названия моделей... Лобовое решение проблемы... |
| Автор: Frees 2.4.2010, 08:45 |
| TRegExp |
| Автор: Matematik 2.4.2010, 10:24 | ||
Регулярки http://sites.google.com/site/kemiisto/article/tregexpr
|
| Автор: sbfactory 2.4.2010, 11:39 |
| Можно сделать банально и просто: string:='<td class="tcl"><span class="Sell"><a href="http://magazin.ru/lot.php?id=588">Nokia 6600</a></span></td>'; ///скопируем нужную часть строки: string:=copy(string, lastdelimiter('">', string)+2, pos('</a>', string)-lastdelimiter('">', string)-3); memo2.lines.add(string); Вот как то так... |
| Автор: Proxin 3.4.2010, 16:07 |
| sbfactory, string в качестве имени переменной ни в коем случае нельзя. |
| Автор: Akella 3.4.2010, 17:19 | ||
образец для поиска может выглядеть так, например:
|
| Автор: sbfactory 4.4.2010, 06:21 | ||
Точно, я просто сразу тут писал код, значит пусть заменит string на str; |
| Автор: pomogite 4.4.2010, 10:04 | ||
| Всем большое спасибо, я разобралась =) Теперь возникла другая проблема, большие файлы очень долго обрабатываются, можно хоть как-то ускорить обработку? Вот код:
|
| Автор: sbfactory 4.4.2010, 15:46 |
| for i:=0 to Memo1.Lines.Count-1 do begin s:=Memo1.Lines.Text[i]; memo2.Lines.Text:=ExtractLot(Memo1.Text); ^ Собака тут зарыта ^ Представь сколько в большом файле строк, каждая строка - обращение к компоненту мемо, что само по себе долго. Советую загружать текст в TStringlist, обрабатывать, потом выводить его в мемо. |
| Автор: Dom 4.4.2010, 16:23 | ||||
| Мне кажется что дело тут в другом. 1. Тут что-то судя по всему лишнее. Например зачем переменная s?
2. Передается в процедуру ExtractLot сразу все содержимое Мемо, и тогда зачем вообще использовать цикл? 3. Почему просто не написать?
|
| Автор: pomogite 4.4.2010, 17:57 |
| Спасибо большое =) И правда цикл был ни к чему. |