Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.25;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
1-81630
Мак
2003-08-12 15:31
2003.08.25
Исключительные ситуации


3-81592
RDA
2003-07-29 17:22
2003.08.25
Проблема с импортом большого числа записей


1-81769
Всеволод Соловьёв
2003-08-14 10:34
2003.08.25
Интерфейсы


14-81926
Yanis
2003-08-07 02:51
2003.08.25
Где взять статьи по 3D Max в инете?


3-81552
grand_kvirtu
2003-07-30 16:21
2003.08.25
Как по клику в DBGrid получить индекс выделеной строки