Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-81737
3APA3A
2003-08-10 10:53
2003.08.25
Object Inspector


1-81806
Злодей
2003-08-13 10:25
2003.08.25
Свернуть все окна...


3-81570
NiBL'S
2003-07-29 14:43
2003.08.25
Invalid variant type conversion.


3-81535
kserg
2003-07-25 18:51
2003.08.25
вопрос по MS SQL-серверу


1-81694
Miralex
2003-08-11 12:59
2003.08.25
Mouse right click





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский