Чисто гипотетически !
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4825
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
Чисто гипотетически !
Я неправильно сказал. Запуск не через run, а в виде процесса. Это позволяет нашему приложению контролировать вызываемую программу и прерывать ее работу принудительно, если надо. То есть как-то так:
loc:ok=SELF.StartProcess('wscript ' & clip(SELF.FileNameScript))
loc:ok=SELF.StartProcess('wscript ' & clip(SELF.FileNameScript))
C6/C11, ШВС, tps/btrieve.
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
Чисто гипотетически !
А как это по скорости?
Пробовал ли кто распарсить серьезный файл, мегабайт на 100?
Сколько занимает по времени?
Пробовал ли кто распарсить серьезный файл, мегабайт на 100?
Сколько занимает по времени?
- Игорь Столяров
- Ветеран движения
- Сообщения: 7595
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 20 раз
- Поблагодарили: 64 раза
Чисто гипотетически !
Вы даже не представляете, как я с Вами согласен в этом вопросе !
Но, блин, реалии далеки от этого, причём независимо от выбора конкретной технологии парсинга XML …
Make Clarion Great Again !
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
- Игорь Столяров
- Ветеран движения
- Сообщения: 7595
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 20 раз
- Поблагодарили: 64 раза
Чисто гипотетически !
Вопрос не корректный. Скорость парсинга XML документа очень сильно зависит от его структуры.Constantine писал(а): ↑19 Июнь 2019, 9:41Пробовал ли кто распарсить серьезный файл, мегабайт на 100?
Одно дело залить линейный список и совсем другое выковыривать 6-ой аттрибут в 7-ом уровне вложенности тегов.
Последний раз редактировалось Игорь Столяров 19 Июнь 2019, 9:48, всего редактировалось 1 раз.
Make Clarion Great Again !
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
Чисто гипотетически !
Это верно.
Но, при таких размерах, хотелось бы просто получить некое общее представление.
Но, при таких размерах, хотелось бы просто получить некое общее представление.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4825
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
Чисто гипотетически !
Через win api CreateProcess.
C6/C11, ШВС, tps/btrieve.
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
Чисто гипотетически !
Наткнулся на примерчик парсинга через OLE (MSXML2.DOMDocument): http://www.script-coding.com/XMLDOMscripts.html
А так кто-нибудь пробовал?
По-моему, должно быть быстрее, чем через файл.
А так кто-нибудь пробовал?
По-моему, должно быть быстрее, чем через файл.
Чисто гипотетически !
Если чисто теоретически - последний раз разбирал XML( SCORM 2004 manifest) питоноскриптом - пакетом xmltodict https://pypi.org/project/xmltodict/, потом можно и в JSON одной строкой выгрузить. Если через файл или входной-выходной поток - удобно... Правда, этот прожект с Кларионом слабо связан.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7595
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 20 раз
- Поблагодарили: 64 раза
Чисто гипотетически !
Так это и есть парсинг XML скриптом … Там везде идёт 3-ей строкой: xmlParser.load "C:\Sample.xml" …
Make Clarion Great Again !
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
Чисто гипотетически !
Не совсем так. Это - OLE-объект, которому можно посылать команды.
Если делать через Shell/CreateProcess, результаты можно поместить только в файл, который потом нужно будет считывать.
А таким образом можно результаты поместить сразу в переменную/queue, что может быть гораздо удобнее.
Если делать через Shell/CreateProcess, результаты можно поместить только в файл, который потом нужно будет считывать.
А таким образом можно результаты поместить сразу в переменную/queue, что может быть гораздо удобнее.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7595
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 20 раз
- Поблагодарили: 64 раза
Чисто гипотетически !
Тут вопрос в том, какие результаты … Например OLE интерфейс Microsoft Word клинит при длине строки более 255 символов.
Как здесь ? Не знаю - надо пробовать. А к чему всё это ? Чем Вас не устраивает парсер Clarion XML ? Не надо никаких файлов
и внешних запусков вообще - Юрий где-то в форуме детально описывал технологию разбора XML - даже я понял …
Make Clarion Great Again !
-
- Активист
- Сообщения: 185
- Зарегистрирован: 07 Февраль 2017, 16:58
Чисто гипотетически !
У кларионовского парсера (и всех внешних, которые я пробовал (IQXML и т.п.)) были проблемы с Win1251...
А вдруг, у Microsoft их нет?
А вдруг, у Microsoft их нет?
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4825
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
Чисто гипотетически !
Фишка в том, что с точки зрения приложения это все скрыто в классе.Constantine писал(а): ↑19 Июнь 2019, 10:25Не совсем так. Это - OLE-объект, которому можно посылать команды.
Если делать через Shell/CreateProcess, результаты можно поместить только в файл, который потом нужно будет считывать.
А таким образом можно результаты поместить сразу в переменную/queue, что может быть гораздо удобнее.
Код: Выделить всё
getCountrys_r routine
DATA
lor:queue queue, pre()
lor:name string(128), name('dt:name')
lor:guid string(80), name('bs:guid')
.
CODE
loc:err=0
Loc:NameTmp=Loc:NameOutTmp
Loc:NameVbsTmp=GetNameTmp(FsAccess:ActiveUserDir,'vbs',0)
Loc:NameOutTmp=GetNameTmp(FsAccess:ActiveUserDir,'txt',0)
fsXmlPar.init(Loc:NameTmp,Loc:NameVbsTmp,Loc:NameOutTmp)
fsXmlPar.LoadQueue('dt:country','lor:queue',lor:queue)
fsXmlPar.MakeScript(1)
if fsXmlPar.ErrorCode<>0
FsMessagePr('Ошибка! ' & clip(fsXmlPar.ErrorMessage))
loc:err=1
.
fsXmlPar.kill
C6/C11, ШВС, tps/btrieve.