IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

 
 Ответить  Открыть новую тему 
> Ошибка: Insufficient memory for this operation, C++ Builder
ninja
сообщение 30.10.2010 15:41
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Добрый день! Столкнулся с такой проблемой: пишу базу данных, появилась такая ошибка: Insufficient memory for this operation. Alias: <название бд>, причем когда компилирую проект все нормально ошибок нет, а когда запускаю из среды (F9) появляется эта ошибка, при нажатии на break открывается модуль DBTables и выделяется процедура:

procedure DbiError(ErrorCode: DBIResult);
begin
raise EDBEngineError.Create(ErrorCode);
end;


Такой вопрос, при закрытии проекта (возыв события OnClose()) память очищается? или нужно самому ее чистить?
Если не очищается, то каким образом ее чистить? вызовом деструктора приложения? или методом Free(), как выделять память под приложение и сколько? Если можно на примере. Заранее благодарен за помощь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 30.10.2010 16:00
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Если ты создаешь что-то, то и удаляй сам.
Цитата
как выделять память под приложение и сколько
???
Лучше сделай пошаговое выполнение и отыскивай источник ошибки. Мне кажется, что тут дело совсем не в памяти...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.10.2010 16:06
Сообщение #3


Гость






В BDEAdmin какие значения стоят у SHAREDMEMSIZE и SHAREDMEMLOCATION?

Вот выдержка из хелпа к BDE:
Цитата
"Insufficient memory for this operation" ($2501)
Problem: Your application (or another BDE application) has exhausted the memory available to the BDE.
Solution:
1) Close all BDE applications.
2) Find the program BDEADMIN.EXE. This is usually in a directory somewhere under "\Program Files\Borland...".
3) Run BDEADMIN.EXE and click on the Configuration tab.
4) There should be an item in the treeview on the left side called "Configuration". If it's not expanded, expand it.
5) Next, expand the System entry below it. Under System, select INIT.
6) In the right-side window, find the entry called "SHAREDMEMSIZE". Change this value to 4096.
7) Next, click on the word "Object" in the main window's menu bar, and select Apply.
8) Answer "OK" to the confirmation to "Save all edits...".

You can now try to start your application again. If you still have trouble running the application and you are running Windows NT or Windows 2000, follow the same instructions above, but this time leave the SHAREDMEMSIZE property at 4096, and change the SHAREDMEMLOCATION property to "0x5BDE". Then apply the changes as before, and retry your application. If you still receive the same error, try changing SHAREDMEMSIZE to 8192. If the error continues to persist, you can also try "0x6BDE" for SHAREDMEMLOCATION. If the error still continues to persist, you can also try other values for SHAREDMEMLOCATION. (See solution for error $210D below.)

"Shared memory conflict ($210D)
Problem: The BDE is trying to use a location in memory that is already in use by the operating system or another application.
Solution:
1) Close all BDE applications.
2) Find the program BDEADMIN.EXE. This is usually in a directory somewhere under "\Program Files\Borland...".
3) Run BDEADMIN.EXE and click on the Configuration tab.
4) There should be an item in the treeview on the left side called "Configuration". If it's not expanded, expand it.
5) Next, expand the System entry below it. Under System, select INIT.
6) In the right-side window, find the entry called "SHAREDMEMLOCATION". Change this value to 5BDE.
7) Next, click on the word "Object" in the main window's menu bar, and select Apply.
8) Answer "OK" to the confirmation to "Save all edits...".

Other values that may also help solve this issue on NT or Windows 2000 are: 1000, 7000, and 7F00. If none of these values resolve the issue, you may try 2000, 3000, 4000, etc. or any values in between the specified ranges below for each operating system:
Windows 95/98: SHAREDMEMLOCATION = 9000 to FFFF
Windows NT/2000: SHAREDMEMLOCATION = 1000 to 7F00
It has also been reported by some users that removing or disabling the driver for a sound card on Windows NT can resolve the issue as well, but normally just "relocating" the BDE's memory pool using the SHAREDMEMLOCATION setting will suffice.
Попробуй сделать то, что написано в первом случае, то есть увеличить SHAREDMEMSIZE.
 К началу страницы 
+ Ответить 
ninja
сообщение 30.10.2010 21:30
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Владимир спасибо! Вроде все работает. Не стал создавать новую тему, написал тут... Подскажите из-за чего может возникнуть такая шибка: record locked by another user? Возникает когда запускаю приложение, добавляю записи в 2 таблицы, закрываю приложание и когда во вновь открытом приложении обращаюсь ко 2й таблице, появляется эта ошибка, в интернете нашел только то, что это из-за файла С:\PDOXUSRS.NET, решение проблемы перезапуск среды программирования и закрытие всех программ которые используют таблицы, когда перезапускаю приложение все равно появляется ошибка.

Сообщение отредактировано: ninja - 30.10.2010 21:31
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.10.2010 22:24
Сообщение #5


Гость






Цитата
решение проблемы перезапуск среды программирования и закрытие всех программ которые используют таблицы
Не только.

Во-первых, PDOXUSRS.NET может быть причастен к данной ошибке только если программа завершилась некорректно, если завершение программы было нормальным - PDOXUSRS.NET ни при чем, он не должен сохранять блокировку.

Во-вторых, если все-таки произошло некорректное завершение программы - только закрытия всех программ, использующих данную таблицу будет недостаточно. Для решения проблемы может понадобиться удалить файл PDOXUSRS.NET, что может потребовать дополнительные действия, вплоть до перезагрузки компьютера (сам этот файл может быть залочен).

Но мне кажется, что не надо пока ходить так далеко. Лучше покажи, как именно ты добавляешь записи в таблицу, и что происходит с момента добавления записи до момента закрытия программы. Начни с создания тестового проекта. Только добавление записей, ничего лишнего. Попробуй добавить что-то в таблицу, закрыть программу, открыть снова и попробовать обратиться к добавленной на предыдущем шаге записи.

P.S. Но я сразу говорю, во всем, что касается Парадокса - я могу помочь только теоретически, правтически проверять теперь негде. Когда-о давно, еще на Д6, я использовал BDE, но прошло очень много времени, и я перебрался на ADO (базы с доступом BDE уже не развивается, чего о базах, использующих ADO не скажешь smile.gif ). Я понимаю, что есть учебная программа, но... Помочь практически ничем не смогу. Только то, с чем сталкивался когда-то сам.
 К началу страницы 
+ Ответить 
ninja
сообщение 30.10.2010 22:45
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Владимир, не знаю чтобы я без Вас делал smile.gif у меня проект состоит из 2х форм, 1я форма авторизации (главная), а 2я отображение самой БД, чтобы постоянно не вводить логин с паролем, я 1ю форму временно отключил, но т.к. она главная корректно приложение не закрывалось, точнее я просто его некорректно завершал, поэтому и возникала ошибка, подключив обратно форму все отлично работает

Большое Вам спасибо !

P.S. В задании по написанию БД впринцыпе не сказано какими средствами пользоваться, просто уже начал делать на BDE. А если переходить на ADO, принцып обращения/подключения таблиц такой же, многое в программе нужно менять?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 31.10.2010 0:19
Сообщение #7


Гость






Не знаю, я никогда не переносил программы с одного метода доступа на другой. Просто следующий проект начни с использованием ADO, и посмотри, проще это будет или сложнее. smile.gif
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 28.04.2024 19:28
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"