Страница: 1 |
Страница: 1 |
Вопрос: Replace, InStr - ограничения!
Добавлено: 13.10.04 01:46
Автор вопроса: NorN | Web-сайт:
Ни кто не знает, в функции replace и instr есть ограничение на максимальный размер искомой стоки?
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #1
Добавлено: 13.10.04 05:32
В функции InStr при очень длинных строках при текстовом методе сравнения, возможно возникновение ошибки времени исполнения Stack overflow. Избежать этой ошибки можно, переведя исходную строку и образец в один регистр и перейдя на бинарное сравнение
Номер ответа: 2
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #2
Добавлено: 13.10.04 05:56
Конечно же нет.
Номер ответа: 3
Автор ответа:
NorN
Вопросов: 7
Ответов: 15
Web-сайт:
Профиль | | #3
Добавлено: 13.10.04 08:00
Так и думал... А replace - аналогично, да?
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 13.10.04 08:52
Ограничение в смысле, бывает укажешь ему такую строку, что он и за минуту не справляется... вот где это ограничение
Номер ответа: 5
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #5
Добавлено: 13.10.04 10:10
Пробовал 10 Мб строку - спокойно обрабатывает и InStr и Replace. Попробовал 100 Мб - Винда завопила, что мало памяти, программа зависла. Но это уже по другому поводу.
Номер ответа: 6
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #6
Добавлено: 13.10.04 12:23
Ага, VB ж строки через OLE API создаёт. А тому локальная память пофигу. Хотя это только предположение, но скорее всего любые VB-строки помещаются в куче (HEAP). Я так думаю. Хотя раз Mihalыch говорит что Stack Overflow, то может быть это и не так.
Номер ответа: 7
Автор ответа:
NorN
Вопросов: 7
Ответов: 15
Web-сайт:
Профиль | | #7
Добавлено: 15.10.04 20:43
у меня такая проблема:
эта строка - Replace text,find,strReplace,1,,vbTextCompare при длинном значении find отказывается заменяться! Причём find содержит строку чуть больше 1000 символов.
пробовал реализовать свою функцию замены, никак... те же проблемы, только в InStr.
Может я что-то не так делаю??? Вообще не представляю в чём проблема...