Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

версия какая? патч к этой версии пожходит? источник патча?


Наверх

Титульная страница Поиск, карта сайта Написать письмо