![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Midas 'Insufficient memory for this operation'
Лёля © (2007-06-12 17:46:00)Есть ClientDataSet, он связан с TXMLTransformProvider, для которого указан файл трансформации (TransformRead.TransformationFile = SomeFile.xtr). В цикле XMLTransformProvider'у указывается очередной файл XML, который нужно вычитать:
ClientDataSet.Close;
XMLTransformProvider.XMLDataFile := 'SomeFileName.xml';
ClientDataSet.Open;
где-то на десятой итерации вываливается с ошибкой 'Insufficient memory for this operation'. Попыталась употребить MIDAS PATCH Version 2.07:
...This unit is a patch for the midas.dll. It is build to eliminate the 'Insufficient memory for this operation'-error which can occur in midas
communication. An interesting side-effect of the patch is nice performance improvement...
И тоже не помогло. Что же делать и как быть?
sniknik (2007-06-13 20:07:00) [1]> А оперативки и так гиг :)
а компонентов то у тебя и так 2 которые, теоретически, могут держать полную копию данных...
+ "развернутые" данные могут занимать, и скорее занимают, места поболее чем исходные в файле... (это обьясняет куда девается виртуальная память из свопинга... а может с ней не умеет работать ктото из них)
если хочеш пришли проблемный файл, попробую на 2х гигах, если откроется то дело ясное будет в чем причина. (исключиться что данные запороты и т.д.)
Лёля (2007-06-13 18:15:00) [2]Ага, FastMM не выход. Не получилось - файлик не открылся. Как с мидас-патчем, так и без него.
А оперативки и так гиг :)
XML незаменяем, поскольку в нем данные, а с парсерами в данной задаче гораздо больше головной боли (хотя и использую в других частях проекта).
sniknik (2007-06-13 17:05:00) [3]> попробовать FastMM ?
он что из 512мг оперативки 1024мг сделает? ну, пусть он оптимальнее работает с памятью, ну пусть выгадаешь 10, 20 или даже 100мг... и данный файл откроется (и даже немного больше)... а завтра придет(/получится) не на 100 а на 200 мг. больше... или программу надо будет запустить на другом компе с 384мг... и все по новой.
в общем не выход. даже если получится.
Правильный Вася (2007-06-13 16:48:00) [4]попробовать FastMM ?
> Вы до сих пор пользуете midas.dll вместо юнита MidasLib?
в описалове написано, что проблема однофигственно проявляется в обоих
sniknik (2007-06-13 16:29:00) [5]> и что теперь?
вот тут есть упоминания парсеров, что не тянут весь файл в память...
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1180862939&n=3
можеш использовать их. а можеш заменить xml чем нибудь более подходящим для задачи (если вообще заменяемо, а не исходные данные в нем).
Лёля (2007-06-13 15:01:00) [6]Но кстати, ругается все равно на мидас.длл
Лёля (2007-06-13 14:58:00) [7]Хм... максимальный размер XML-файла меньше 500 кило. Его и выбрала для минимального проекта. Ну так и есть. 500 - это много. До этого пробовала на файлах меньшего размера. Спасибо, дорогой товарищ, что вовремя ткнули носом! Одна беда - и что теперь? Распарсивать вручную там не очень кузяво
sniknik (2007-06-13 14:43:00) [8]а может всетаки не он? не мидас.
а ошибка в данных например, сам файл, десятый по счету (на каком там сбой?) очень большой... глюк в программе (не только мидасу может памяти не хватать).
сделай новый проект с минимумом кода, только с открытием датасета, так сбоит?
Лёля (2007-06-13 14:36:00) [9]кстати, с MidasLib тоже сбоит
Лёля (2007-06-13 14:26:00) [10]а MidasLib разве не использует тот же функционал, что и в ДЛЛ? Мне сейчас пока не нужно переносить приложение на системы без midas.dll
Johnmen (2007-06-13 14:04:00) [11]Вы до сих пор пользуете midas.dll вместо юнита MidasLib? Тогда мы не идём к вам...
Лёля (2007-06-13 13:34:00) [12]А дома Delphi7 и Turbo. midas.dll, соответственно, от Turbo - версия 10.0.2151.25345. Патч не применяю. Вылезают те же ошибки. Пробовала создавать/освобождать TClientDataSet динамически на каждой итерации. С тем же успехом валится там же.
Лёля (2007-06-12 20:04:00) [13]с подключенным ShareMem - та же ситуация
Лёля (2007-06-12 20:01:00) [14]Ничего не отключала. Так и остается
{DEFINE HEAPALLOC}
{$DEFINE MEMMGR}
то есть DelphiMM. На всякий случай и в опциях проекта добавила MEMMGR
Правильный Вася (2007-06-12 19:14:00) [15]секция
// SELECTING MEMORY MANAGER
изучена?
Лёля (2007-06-12 19:02:00) [16]midas.dll версии 6.0.10.157 (то есть патч подходит), взят с http://cc.codegear.com/Item/20524
можно взять отсюда http://slil.ru/24502565
Delphi 6.0 (Build 6.240) Update Pack 2
Правильный Вася (2007-06-12 17:51:00) [17]версия какая? патч к этой версии пожходит? источник патча?