Перейти к содержимому

Фотография

Работа с большими строками


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 Mr.BUG

Mr.BUG

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

  • Members
  • Pip
  • 21 сообщений

Отправлено 30 ноября 2006 - 09:26

Есть необходимость работы со строками длиной более 100 000 символов, точнее надо найти подстроку в тексте. В переменную STRING записать более 32K символов нельзя. Не подскажете как быть?
  • 0

#2 Tiana

Tiana

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Girnyk S. Tatyana
  • Город:Украина, Харьков

Отправлено 30 ноября 2006 - 10:45

Как вариант, можно попробовать, определить строку как Variant тип, затем сохранить в нее значение строки1 (в которой будет осуществляться поиск строки2).
Придумать алгоритм, вроде следующего:
найти в строке1 позицию вхождения первого символа из строки2.
обрезать ту часть строки1, в которой не было ни одного вхождения первого символа из строки2.
затем вызвать функцию InStr и сравнить обрезанную строку1 и искомую строку2. если результат равен 0, то снова обрезать первый символ строки1 и снова найти в строке1 позицию вхождения первого символа строки2 и т.д. пока InStr не вернет значение 1, что будет означать, что строка2 входит в строку1, или до тех пор пока в строке1 не останется ни одного символа.
  • 0

#3 Mr.BUG

Mr.BUG

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

  • Members
  • Pip
  • 21 сообщений

Отправлено 30 ноября 2006 - 11:05

Спасибо огромное!!! Variant - тема!
  • 0

#4 Tiana

Tiana

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Girnyk S. Tatyana
  • Город:Украина, Харьков

Отправлено 30 ноября 2006 - 11:14

не за что :blush:
но там только одним Variant не обойтись, потому что функция InStr работает со String переменными.. т.е мне кажется, что там все равно надо приделывать алгоритм..

а еще такой вопрос, Вам нужно найти подстроку в тексте обязательно программным способом или нужно найти строку в тексте на странице?
  • 0

#5 Mr.BUG

Mr.BUG

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

  • Members
  • Pip
  • 21 сообщений

Отправлено 30 ноября 2006 - 12:18

Радость побед была несколько преждевременной... =(((
Когда я искал подстроку в строке - робот выдавал ошибку. Когда стал искать подстроку в Variant - все вроде было нормально, робот выдавал позицию. Но, когда я поглядел длину Variant переменной - она была 32К символов... Т.е. как у строки. Т.е. от того что робот перестал вылетать - по большому счету проблема не разрешилась. Имея строку 120К символов в буфере - я не смогу никак определить кол-во вхождений подстроки туда.

Иногда бывает нужно просто найти строку в тексте на странице.
  • 0

#6 Tiana

Tiana

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Girnyk S. Tatyana
  • Город:Украина, Харьков

Отправлено 30 ноября 2006 - 13:02

Иногда бывает нужно просто найти строку в тексте на странице.

Можно использовать Verification Point на предмет анализа наличия фрагмента текста на странице.
  • 0

#7 Mr.BUG

Mr.BUG

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

  • Members
  • Pip
  • 21 сообщений

Отправлено 30 ноября 2006 - 13:16

Можно использовать Verification Point на предмет анализа наличия фрагмента текста на странице.

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

С проблемой частично разобрался... Функция GetField вроде нормально работает с буфером. И если мы ищем какую-то фразу отделенную от основного текста пробелами - то можно составить массив из слов в буфере и уже искать в нем.
  • 0

#8 Real

Real

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

  • Members
  • Pip
  • 28 сообщений
  • Город:Санкт-Петербург

Отправлено 01 марта 2007 - 15:11

Доброго времени суток!
Чтобы не поднимать новую тему, продолжу здесь:
Есть набор строк, номер интересующей строки известен и эту строку необходимо записать в переменную, чтобы потом сравнить с другой.
Находим строку по номеру->записываем в переменную->сравниваем StrComp и получаем рез-т. Это если в кратце.
Проблема в том, что не удалось найти в хелпе, как получить строку по номеру, или по её ключевым словам!

Заранее спасибо!
  • 0
404 Not Found

#9 Real

Real

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

  • Members
  • Pip
  • 28 сообщений
  • Город:Санкт-Петербург

Отправлено 05 марта 2007 - 11:13

Я так понимаю, что в RR нет операции по поиску строки по номеру, либо по ключевым словам!
Тогда попытался найти строку с помощью VP:
res = GenericObjectVP (CompareText, "Index=0;Type=Control", "VP=SELF.btnShowReport.BackColor;Type=FindSubStr")
но рез-тат получается отрицательный
  • 0
404 Not Found


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных