Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

приложение зависает при обращении к Firebird. что делать помогите [D7, IB6.x]


Страницы:   1 2 3

Tepex ©   (2008-11-05 14:29:00) 

Доброго времени суток всем. Проблема в следующем есть сервер firebird и к нему подключаются клиенты и бывает так что иногда обращаешься к записи чтобы ее считать и приложение зависает. В чем может быть проблема? может быть другие пользователи обращаются к записям и блокируют их?


Tepex   (2008-11-06 13:59:00) [21]

[35] Извените конечно но что значит НД?


Сергей М.   (2008-11-06 12:31:00) [22]


> не то, это к к рекордсету


Судя по авторскому


> обращаешься к записи чтобы ее считать и приложение зависает


проблемы как раз при работе с НД


sniknik   (2008-11-06 12:10:00) [23]

> http://delphi-faq.zoxt.net/363.htm
это немного не то, это к к рекордсету... лучше обратиться к документации.


sniknik   (2008-11-06 12:08:00) [24]

> Пересматривал код весь процесс проходит нормально, а вот в куске который я написал происходит зависание системы.
ну да...

st:=  StringList.Text;
вот кусок в котором процесс (передача текста в переменную) проходит нормально.

после гденибудь в другом месте делаем StringList.Free, тоже что характерно совершенно нормально.

потом пытаемся выполнить первый "нормальный" кусок второй раз...


Сергей М.   (2008-11-06 12:07:00) [25]


> Tepex

http://delphi-faq.zoxt.net/363.htm


Сергей М.   (2008-11-06 11:54:00) [26]


> Tepex ©   (06.11.08 11:40) [28]


А что мешает отказаться от доступа к базе через ADO непосредственно в обработке в пользу доступа через дельфийские компоненты прямого доступа в 1С-надстройке ?


Tepex   (2008-11-06 11:53:00) [27]

[29] Пересматривал код весь процесс проходит нормально, а вот в куске который я написал происходит зависание системы. может проблема в настройке самой СУБД? Или программа написанная на Делфи блокирует таблицы в чем проблема может быть?


sniknik   (2008-11-06 11:46:00) [28]

ну так, если там допущена такая ошибка... то нужно пересматривать весь код, очевидно писалось без  понимания процесса.


Tepex   (2008-11-06 11:40:00) [29]

код привден верно работало даже с этой строкой, хотя она не правильная, спасибо за то что указал. Писал код не я, есть проблема с зависанием и мне ее к сожалению приходится решать.


sniknik   (2008-11-06 11:34:00) [30]

> Извени перепутал конечно это чушь.
тогда вопрос... а что именно мы тут обсуждаем? если приведённый код не рабочий, приведён "по памяти" и является чушью... как именно ты хочешь найти ошибку.

это все одно что для ремонта одного авто в авто мастерскую пригнать другое, но говорить все таки про первое (и главное ожидать, что отремонтируют именно его)...


sniknik   (2008-11-06 11:30:00) [31]

> И как надо написать правильнее?
смотря для чего/что делается, если нужна именно строка то память обычно правильно выделять под неё полностью, и куски "вкопировать"  на места. а то что есть будет черезчур часто перераспределять память под строку. что и приведет к тормозам, если же строка превысит какой то объем (теоретически 2гига но практически меньше) то к нехватке памяти и/или глюку.


Tepex   (2008-11-06 11:28:00) [32]

[23] Извени перепутал конечно это чушь. Просто сейчас под рукой нет Делфи


Tepex   (2008-11-06 11:23:00) [33]


> кстати я бы и это посчитал бы глюком, правда это не всегда
> "смертельно", от объема зависит, но всегда тормозно
> > СтрокаИДЗаявок = СтрокаИДЗаявок + Формат(ТаблицаБазы.fields("orderid").
> Value,"ЧГ=") + ",";

И как надо написать правильнее?


sniknik   (2008-11-06 11:22:00) [34]

> Это тоже самое что и в делфи ADOConnection.CursorLocation  = "ltReadOnly";
практически да, и дельфи это даже скомпилировать не даст.... насколько пинимаю.


Tepex   (2008-11-06 11:20:00) [35]

[19] Ну убрал, толку не стало от этого вооще повисла обработка при первом запуске. Если я правильно понимаю то Соединение.CursorLocation = "ltReadOnly"; Это тоже самое что и в делфи ADOConnection.CursorLocation  = "ltReadOnly"; Или может я ошибаюсь?


sniknik   (2008-11-06 11:19:00) [36]

кстати я бы и это посчитал бы глюком, правда это не всегда "смертельно", от объема зависит, но всегда тормозно
> СтрокаИДЗаявок = СтрокаИДЗаявок + Формат(ТаблицаБазы.fields("orderid").Value,"ЧГ=") + ",";


Tepex   (2008-11-06 11:17:00) [37]

[18] Закрытие самой 1С помогает, но не всегда. Просто когда закрываешь обработку все переменные обнулются и становятся = неопределено, поэтому связь с ком объектом разрывается и он тоже убивается. в чем тогда может быть причина? ИМХО


sniknik   (2008-11-06 11:16:00) [38]

странно что и в первый раз то работает...
не знаю как 1С так вообще работает, и зависит ли описанное от этого, но вот тут ошибка
> Соединение.CursorLocation = "ltReadOnly";

(автору кода не составит груда заглянут в доку и исправить)


Sergey13   (2008-11-06 11:11:00) [39]

> [17] Tepex ©   (06.11.08 10:58)
> закрываешь обработку(не саму 1С)

А если "саму 1С" закрыть/открыть, то все нормально? Значит что-то не до конца прибили, ИМХО.


Tepex   (2008-11-06 10:58:00) [40]


> > [7] Tepex ©   (05.11.08 23:18)
> > но иногда после закрытия обработкии вновь ее открытия
> и
> > запуска зависает, и не работает не nowait, не timeout
> которые
> > установлены.
>
> Закрытие и открытие имеется в виду перезапуск приложения
> или отдельной формы приложения? Может чего не так инициализируется?
>


Просто открываешь в 1С обработку, закрываешь обработку(не саму 1С) и снова через файл->открыть, открываешь обработку и запускаешь ее после это 1С виснет.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо