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

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

Ошибка "Insufficient memory for this operation." [D7, MSSQL, Paradox]


Aleksandr. ©   (2004-08-17 15:08:00) 

В Execute потока создается сессия, TDataBase и TTable:

 pxSession:=TSession.Create(nil);
 pxDB:=TDataBase.Create(nil);
 pxTable:=TTable.Create(nil);
 try
   pxSession.SessionName:='px'+aTblName;
   pxSession.Active:=true;
   pxDB.DatabaseName:=FDir;
   pxDB.SessionName:=pxSession.SessionName;
   pxDB.LoginPrompt:=false;
   pxDB.HandleShared:=false;
   try
     pxDB.Connected:=true
...

вот периодически на pxSession.Active:=true либо на pxDB.Connected:=true; возникает эта ошибка. Всего таких потоков у меня 30-37.


Rusa   (2004-08-18 07:02:00) [1]

У меня тоже возникала такая проблема для программ использующих BDE, когда одновременно запущено их много. Помогло изменение параметров в "BDE Administrator" на закладке "Configuration", ветвь "System->INIT". Там есть два параметра MAXBUFSIZE и SHAREDMEMSIZE. По умолчанию им присвоены значения 2048. Я у себя увеличил их до 8192. После этого проблема пропала.


Aleksandr.   (2004-08-17 17:21:00) [2]

Я не писал, что ни один из них не работает. Количество выдающих ошибку потоков случайно - от 5 до 60%. Просто если после
pxDB.HandleShared:=false;
  try
    pxDB.Connected:=true
убрать работу с таблицей и
сразу открыть except c обработчиком и finally с освобождением объектов, будет то же самое.


Digitman   (2004-08-17 15:44:00) [3]


> Так до pxTable.Open и не доходит


дык а нахрена ж ты их, таких "недоделанных" потоков, плодишь аж 30..37 штук ?! ... Когда и один-то не делает то, что ему положено ?


Aleksandr.   (2004-08-17 15:24:00) [4]

pxSession.Active - без этого почему-то случается глобальный вылет БДЕ - такой, что поток вообще умирает и на обращения не реагирует (пару раз я спрашивал об этой проблеме, советовали на каждый поток выделять по своему TSession и TDataBase, так и сделал, но не помогло, пока не стал активировать сессию и коннектить базу данных).
Так до pxTable.Open и не доходит - эксепт случается на одном из указанных методов. Причем в первом случае - pxSession.Active - к ошибке иногда дописывается имя таблицы, а во втором слово "Alias".


Digitman   (2004-08-17 15:15:00) [5]


>    pxSession.Active:=true;


это зачем ? ... хотя это - к слову ...

самое интересное начинается после pxTable.Open .. а этого как раз здесь нет


Наверх

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