Главная страница
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.02 c
1-81646
Евгений12
2003-08-09 22:20
2003.08.25
Edit в QReport


1-81650
Black Shark
2003-08-12 09:29
2003.08.25
TStrings


1-81624
Nucl
2003-08-12 23:27
2003.08.25
ComboBox - запретить ввод.


9-81517
АБВ
2003-02-08 12:05
2003.08.25
игра в сети


1-81699
Condor
2003-08-11 11:00
2003.08.25
Как сохранить картинку в FileStreem?