Форум: "Базы";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
ВнизTQuery и Win98. Найти похожие ветки
← →
Dripus (2003-07-30 16:25) [0]Толи это WIN98 так работает c TQuery, толи я что то не так сделал. Помогите разобраться. А суть вопроса такова.
Несколько запросов выполняются по очереди неограниченное количество раз:
Пример:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("SELECT * FROM .....................") ;
Query1.Open;
//Всяки разны деяния.
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("UPDATE .....................") ;
Query1.ExecSQL;
//Всяки разны деяния.
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("SELECT * FROM .....................") ;
Query1.Open;
И так далее и тому подобное.
И все это хозяйство работает неограниченное количество раз (как пользователь за хочет).
В итоге ВИНДА(98) начинает погибать, а именно заканчивается память. При попытке открыть что-нибудь еще какой-нибудь Word ВИНДА меня радостно оповещает, что память благополучно закончилась, и было бы не плохо закрыть, что-нибудь.
Комп у меня П4-2ГГц. ОЗУ 256.
А в WINХР все работает не на что не жалуется.
Помогите разобраться, в чем дело. Толи ВИНДА(98) тормозит, толи я.
← →
Desdechado (2003-07-30 17:29) [1]ну, у 98 с памятью и правда не гаразд
но, похоже, у тебя не память закончилась, а место на диске или файловые хендлы (БДЕ их кушает при запросах и может не освобождать). Если у тебя несущие диски разные для разных ОС, то см. свободное место
← →
Dripus (2003-07-30 19:03) [2]Со свободным местом все в прорядке. А системы разные и стоят на разных компах. На работе Win98 а дома WinXP. Дома работает без вопросов а на работе парит мозги.
← →
Sergey13 (2003-07-31 08:49) [3]2Dripus (30.07.03 16:25)
Это больше похоже на нехватку ресурсов. Но не памяти, а GDI и/или User. И возникать такая штука могет при перегруженности интерфейса пользователя всякими контролами и созданием одновременно большого множества экземпляров таких форм. Покопай в эту сторону.
← →
Anatoly Podgoretsky (2003-07-31 09:08) [4]В коде очень подозрительные //Всяки разны деяния.
Сделать проверку так
for I := 1 to N do begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("SELECT * FROM .....................") ;
Query1.Open;
end;
← →
Dripus (2003-07-31 09:23) [5]Главная форма стартует один раз это точно (т.к. я её сам запускаю, а больше пользователей нет), а все остальные формы в программе являются модальными. Интерфейс одного из модальных окон особо и нет ничего ( GroupBox 8шт., Edit 5шт., DBLookupComboboxEh 1шт., BitBtn 2шт с картинками, Query 2шт., DataSource 1шт.) вот и все. А запускаю я её таким образом:
Application.CreateForm(TForm2,Form2);
with Form2 do begin
//Тут сякие дела. Капшены разные, Запросы работают.
Showmodal;
if WindowState = wsMinimized then WindowState := wsNormal;
А закрываю обычным Сlose;
Может сдесь я ошибаюсь.
end;
← →
Dripus (2003-07-31 09:34) [6]
> В коде очень подозрительные //Всяки разны деяния.
> Сделать проверку так
>
> for I := 1 to N do begin
> Query1.Close;
> Query1.SQL.Clear;
> ( "SELECT * FROM .....................")
> В коде очень подозрительные //Всяки разны деяния.
> Сделать проверку так
>
> for I := 1 to N do begin
> Query1.Close;
> Query1.SQL.Clear;
> Query1.SQL.Add("SELECT * FROM .....................")
> ;
> Query1.Open;
> end;
"Всяки разны деяния"-это вычисления по полученным результатам из запрося для следующего запроса на изменение, добавление и наоборот. А зачем мне запрос в цикл ставить и что я этим проверю?
← →
HSolo (2003-07-31 09:37) [7]Вот это:
Application.CreateForm(TForm2,Form2);
у Вас один раз выполняется? Или каждый раз при обращении к форме?
← →
Dripus (2003-07-31 09:41) [8]Каждый раз. Касяк?
← →
HSolo (2003-07-31 09:43) [9]Да. Или создайте один раз - или уничтожайте каждый раз.
← →
Dripus (2003-07-31 09:47) [10]Вот так form2.Destroy;
← →
HSolo (2003-07-31 09:51) [11]Лучше form2.Free или form2.Release
А еще можно в form2.OnClose написать:
Action := caFree;
Тогда форма при закрытии самоистребится, и никаких Free не надо.
← →
Dripus (2003-07-31 09:58) [12]Благодарствую буду пробовать.
← →
Dripus (2003-07-31 10:08) [13]Еще раз всех благодарю. А особенно HSolo ©. Все заработало и с памятью все в порядке. Выходит это не TQuery и не WIN98 глючил, а Я. Спасибо еще раз.
← →
MsGuns (2003-07-31 12:25) [14]Советую отделять декларации объектов БД (в т.ч.компонентов доступа) от контролов, их использующих. Для этого (в том числе), собственно, и придуман модуль данных.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c