Имя: Пароль:
1C
1C 7.7
v7: AddIn.XMLParser вылетает 1С
0 AlexFF
 
12.10.15
15:04
Пытаюсь загрузить xml файл из строки "ОтветМодуляЕГАИС" для последующей обработки
XMLАнализатор = СоздатьОбъект("AddIn.XMLParser");
ХМЛФайлДанных    =    XMLАнализатор.СоздатьДокумент();     ХМЛФайлДанных.ЗагрузитьИзСтроки(ОтветМодуляЕГАИС);

и пограмма вылетает. Просто закрывается и все.
СтрДлина(ОтветМодуляЕГАИС)=742555
Как быть? Каким образом прочитать такую длинную строку?
1 бомболюк
 
12.10.15
15:40
там вроде надо писат ькак то типа
СоздатьПоследовательноСчитываемыйДокумент()
или типа того...
2 бомболюк
 
12.10.15
15:41
и с длинными строками в 7ке работать не получается.
3 Злопчинский
 
12.10.15
15:56
прочитать и сохранить из 1С внеплатформенными средствами.
После концов тегов вставить энтеры внеплатформенными средствами.
после этого обработать собственно иксемель штатно
4 AlexFF
 
12.10.15
16:03
(3) Спасибо попробую. А энтеры обязательно вставлять?
5 AlexFF
 
12.10.15
16:07
Какими, например внеплатформенными средствами можно поставить энтеры?
6 spectre1978
 
12.10.15
16:15
Мож, другой парсер? С тем же msxml через OLE поработать?
7 Злопчинский
 
12.10.15
18:40
(5) самый тупой вариант: читай посимвольно, выводи в другой файл посимвольно, как встретишь ">" - в вывод добавляй энтер.
а потом получишь в итоговом файле не одну строку длиной 700 килобайт а кучу строк вменяемой длины... и обрабатывай чем хошь - темже самым иксемельпарсером..
8 trad
 
12.10.15
19:48
(7) если в строке, кроме прочего, появятся ентеры, то строка от этого не станет короче
9 Злопчинский
 
12.10.15
22:24
(8)  согласен
Но все же есть надежда что так будет легче хотя бы в чемто
10 spectre1978
 
13.10.15
07:37
(9) вообще 700К, мне кажется, не так уж это и много. А какое ограничение у длины строки в семерке? Нагуглить ничего внятного не смог.
11 spectre1978
 
13.10.15
07:42
может, в ответе есть какая-нть байда которая роняет парсер? Другие аналогичные ответы проходят?
12 trad
 
13.10.15
09:27
(10) У семерки проблема с передачей длинной строки через COM, коим является, например, передача в метод объекта, реализованного по стандартной технологии ВК.
Предельного значения не помню.
13 Смотрящий
 
13.10.15
09:28
(12) В 7.7 нету COMа
14 spectre1978
 
13.10.15
09:29
(13) что значит "нету COMа"? Создание и вызов ком-объектов вполне себе работает
15 spectre1978
 
13.10.15
09:29
(12) не знал об этом, понятно
16 Злопчинский
 
13.10.15
09:49
(10) 32К вроде
17 trad
 
13.10.15
10:17
(13) не какой технологии, по твоему, основана ТСВК
18 trad
 
13.10.15
10:23
(16) строки в семерке могут быть очень большие, ограничение - размер доступной виртуальной памяти процесса.
Проблема возникает при COM-взаимодействии, на этапе преобразования в/из BSTR. Очень давно изучал этот вопрос, насколько помню, там что то "не чисто" с выделением памяти.
19 trad
 
13.10.15
10:25
(18) + для обхода этой проблемы написал костыль в рамках oleexsup.dll
пример WinHttpRequest ошибка при отправке запроса
2 + 2 = 3.9999999999999999999999999999999...