![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как избавиться от Too many open files? [D7, WinXP]
Akmen © (2004-04-06 12:21:00)Соратники. Прошу руку помощи. У меня в процессе поточного приложения вылезает ерка Too many open files. Я работаю через BDE. Там есть параметр MAXIFILEHANDLES, который можно увеличить однако проблемы это не решает - в итоге прога виснет по той же причине преодолевая барьер MAXIFILEHANDLES. КАК МНЕ ЧИCТИТСЯ В ПРОЦЕССЕ РАБОТЫ ПРОГРАММЫ??? HELP!!! PLEASE !!!!
KapitanSerg (2004-04-06 21:21:00) [1]Дарагой!
Все дело в том, что QueryLC.Active:=False сама вызывает QueryLC.Close. Тоже самое и с QueryLC.Active:=true и QeryLC.Close. Резумирую, ты дважды делаешь одну и ту же операцию.
Что же касается ExecSql, то эта процедура предназначена только для исполнения SQL-модификацмй БД (типа Insert, Update и т.п.)
panov (2004-04-06 20:42:00) [2]Form1.QueryLC.DataBaseName:= ..........;
Это что - каждый раз динамически к новой БД подключаешься, или БД одна?
Akmen (2004-04-06 16:25:00) [3]Ну, допустим, вместо EXECSQL я поставил OPEN. Однако суть дела от этого не меняется. По прежднему появляются и живут до закрытия проги файлы _QSQL***.DBF. ВОт из-за них и всё вешается, когда они достигают показателя MAXFILEHANDLES. Вот как их высвобождать по ходу работы проги, чтобы они память не грузили ...
Desdechado (2004-04-06 16:21:00) [4]поставь в config.nt files=200
Рамиль (2004-04-06 15:14:00) [5]А ExecSql зачем надо.
Akmen (2004-04-06 13:22:00) [6]Это выборка и базы (SELECT). А Active=True - это необходимость для работы с FieldByName (цапаю инфу из запроса).
KapitanSerg (2004-04-06 12:58:00) [7]>Digitman © (06.04.04 12:51) [6]
Так в том и вопрос - модификация это БД или выборка?
Digitman (2004-04-06 12:51:00) [8]Form1.QueryLC.ExecSQL; //здесь ты запускаешь запрос на модификацию НД, и это понятно ..
Form1.QueryLC.Active:=True; //а этозачем ? что под сим подразумевается ?
KapitanSerg (2004-04-06 12:46:00) [9]Вообще хорошо бы почитать текст SQL запроса. Что-то я подозреваю, что он начинается с SELECT, а выполняется ExecSQL!
Ozone (2004-04-06 12:43:00) [10]TO Akmen © [2]
А зачем сначала Active := false, а потом еще и Close
(тоже относится и к ExecSQL, Active:=true)
бессмыслица какая-то...
KapitanSerg (2004-04-06 12:37:00) [11]Чтобы это значило '.................'?
Akmen (2004-04-06 12:28:00) [12]Я тут код покапал и вот что нашёл - подвисание идёт на SQL-запросе. Вот текст
Form1.QueryLC.Active:=False;
Form1.QueryLC.Close;
Form1.QueryLC.DataBaseName:= ..........;
Form1.QueryLC.SQL.Clear;
Form1.QueryLC.SQL.Add('.................');
Form1.QueryLC.ExecSQL;
Form1.QueryLC.Active:=True;
Может надо как-то мыться после этого?
Anatoly Podgoretsky (2004-04-06 12:24:00) [13]Не открывать столько, ненужные закрывать.