|
lds.Saveas('имя файла', XML!, False) = -1
|
|||
---|---|---|---|
#18+
Приветствую всех! Коллеги, проблема такая: периодически отказывается работать указанная функция, тупо возвращает -1. Поясню подробнее: PB 9. В приложении исходные данные засасываются в датасторы, потом программа их пережевывает (в основном наложением фильтров, есть рекурсия, много копирования данных через get(set)fullstate()) и результат выплевывается в другие датасторы, которые по концухе должны выгружаться в XML. В конечных ds заданы шаблоны и т.д. Все работало на ура на определенных объемах, сейчас исходные данные выросли и полезла ошибка. Причем, если считать lds.Object.DataWindow.Data.XML, то будет пусто, т.е. в один прекрасный момент это свойство слетает, причем в в приложении ни одна ds или dw в XML больше не выгружаются (в другие форматы вроде нормуль). Помогает только перезапуск приложения, если запускать из оболочки, то после этого и dw не открываются в пайнтере - ошибка "error parsing template" - слетает шаблон. - только перезагрузка оболочки. Т.е. видимо ошибка на уровне всей системы а не конкретного объекта. Что пытался: пересоздание датастор, замена ds на dw, сохранение на диск потом reset на все ds потом garbagecollect() потом загрузка с диска, работа через pbdom_bldr.BuildFromDataStore(ds), garbagecollect() везде и прочие танцы с бубном. Еще добавлю, что после загрузки исходной инфы программа в памяти занимает метров 80 (смотрю по дисп. задач), при работе память растет до 150 - 200. Что за косяк? как бороться? РУками XML лень делать. Есть мысль написать внешний exeшник, который скажем psr в xml гоняет, но это не очень красиво, имхо. Хелп ми плиз! Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2010, 18:37 |
|
lds.Saveas('имя файла', XML!, False) = -1
|
|||
---|---|---|---|
#18+
То что память так растет - это работает менеджер памяти PB так ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2010, 19:02 |
|
lds.Saveas('имя файла', XML!, False) = -1
|
|||
---|---|---|---|
#18+
У меня, при решении таких же задач, были проблемы с памятью, но все решилось использованием garbagecollect(). Сейчас все работает "как часы". Правда у меня, как правило, количество строк в DS обычно порядка нескольких тысяч. Не более. Смущает то, что проблемы у Вас возникли "при достижении определенных объемов". Xочется посоветовать в скрипте поискать переменные типа "Integer" и заменить их на "Long". А вообще - соболезную. Хуже всего - это "плавающие" ошибки. Если удается четко фиксировать ситуацию возникновения проблемы, то всегда быстро удается её решить. Good Luck ! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.03.2010, 11:12 |
|
lds.Saveas('имя файла', XML!, False) = -1
|
|||
---|---|---|---|
#18+
Короче, по уму так и не удалось разобраться ((. Нет времени. Дописал прогу так, что при вызове с определенным параметром происходит только что то типа: lds = Create DataStore lds.DataObject = as_psrfname lds.Saveas( ls_xmlfname, XML!, False) Destroy(lds) Halt Сохраняю в psr (ладно хоть это работает , потом запускаю самого себя с параметром. Работает железно, но это извращение, имхо. Всем спасиб. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2010, 19:01 |
|
|
start [/forum/topic.php?fid=15&msg=36512579&tid=1335995]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
135ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 242ms |
0 / 0 |