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

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

Проблемма [D6, Win2k]


Turalyon ©   (2002-03-14 13:23:00) 

Привет всем!
Есть проблемма.
Вот процедура....


procedure TForm1.WriteToBase (CompName : String; LogArr : array of LogStat);
var i, CTime : cardinal;
LogDB : TIBDatabase;
LogTransaction : TIBTransaction;
SelIBQry, CompIBQry, SoftIBQry: TIBQuery;
CompId, SoftId : Cardinal;
begin
Memo1.Lines.Add("Вошли " + IntToStr(length(LogArr)));


try

LogDB := TIBDatabase.Create(self);
LogDB.DatabaseName := "C:\Work\BEHOLDER.GDB";
LogDB.Params.Add("user_name=sysdba");
LogDB.Params.Add("password=masterkey");
LogDB.Params.Add("lc_ctype=WIN1251");
LogDB.LoginPrompt := False;

LogTransaction := TIBTransaction.Create(self);
LogTransaction.DefaultDatabase := LogDB;

LogDB.DefaultTransaction := LogTransaction;

SelIBQry := TIBQuery.Create(self);
SelIBQry.Database := LogDB;
SelIBQry.Transaction := LogTransaction;

CompIBQry := TIBQuery.Create(self);
CompIBQry.Database := LogDB;
CompIBQry.Transaction := LogTransaction;
CompIBQry.SQL.Add("insert into COMPUTER");
CompIBQry.SQL.Add("(C_NAME)");
CompIBQry.SQL.Add("values");
CompIBQry.SQL.Add("(:C_NAME)");

SoftIBQry := TIBQuery.Create(self);
SoftIBQry.Database := LogDB;
SoftIBQry.Transaction := LogTransaction;
SoftIBQry.SQL.Add("insert into SOFTWARE");
SoftIBQry.SQL.Add("(S_NAME, S_DESCRIPTION)");
SoftIBQry.SQL.Add("values");
SoftIBQry.SQL.Add("(:S_NAME, :S_DESCRIPTION)");

LogDB.Connected := True;
Memo1.Lines.Add("Создали компоненты " + IntToStr(length(LogArr)));


Она не заканчивается на этом месте.. но дальше она и не идет...
Ситуация такая - прога работает с Socket eй по сетке приодит информация и она ее обрабатывает. Вот в этой процедуре происходит затык, если информация приходит сразу от нескольуих машин. Создавать компоненты динамически пришлось потому что если опять же придет информация от нескольких машин произойдет затык - статические компоненты уже используются....
Если приходит информация только от одного все работает от двух одновременно просто подвискает.
Второго добавления в Memo не происходит...
Как с этим бороться? Я подумал можетразбить это по птокам, но с ними не работал, по этому не знаю поможет ли....


Turalyon   (2002-03-14 13:49:00) [1]

Если приходит от одной машины то все работает, если же одновременно то на стоке
LogDB.Connected := True
Подвисает. И обе процедуры (в смысле одна процедура) дальше не идут.


Johnmen   (2002-03-14 13:41:00) [2]

А хоть один раз отрабатывает ?


Turalyon   (2002-03-14 13:33:00) [3]

В догонку.... затык происходит на сточке
LogDB.Connected := True;
Только что посмотрел, до этого места все выводит...


Наверх

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