![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема дисконнекта в InterBase6.5 [D7, IB6.x]
GekaNaz © (2004-12-07 10:27:00)Помогите пожалуйста ! недавно в форуме откопал статью автор: Ivan_Ra, где описано как исправить исходники, чтобы при обрыве каннекта(от удалённого сервера), не происходило зависание программы...
В итоге : исправил исходники, а скомпилировать не могу: пишет , что один из модулей был скомпилирован с другой версией другого (используемого модуля).. как быть ?
GanibalLector (2004-12-11 16:29:00) [1]Кстати,а чем тебя не устраивает [10]?Закрыл и все...Ведь могут сервак выключить.Что тогда?
GekaNaz (2004-12-11 15:19:00) [2]Кто разбирается в исходниках ? или механизме работы InterBase ?
Я уверен, что я не единственный, кто столкнулся с такой проблемой ...
GekaNaz (2004-12-09 18:16:00) [3]ну может кто-нить шарит ??? подскажите плиз, как избавиться от этой проблемы ???
GanibalLector (2004-12-09 13:30:00) [4]>Только вот теперь не могу стартануть транзакцию после дисконнекта говорит, что хост принудительно разорвал соединение
Тут я тебе не помошник.Я при обрыве выводил сообщение юзеру и закрывал программу.
GekaNaz (2004-12-09 10:52:00) [5]после выделенной строки (функция Call) происходит ошибка , при попытке стартануть транзакцию,
чтобы приконнектиться к базе я делаю так :
Database.Connected:=false;
Database.Connected:=true;
Transaction.StartTransaction;
//===========================================
procedure TIBTransaction.StartTransaction;
var
pteb: PISC_TEB_ARRAY;
TPB: String;
i: Integer;
begin
CheckNotInTransaction;
CheckDatabasesInList;
for i := 0 to FDatabases.Count - 1 do
if FDatabases[i] <> nil then
begin
with TIBDatabase(FDatabases[i]) do
if not Connected then
if StreamedConnected then
begin
Open;
StreamedConnected := False;
end
else
IBError(ibxeDatabaseClosed, [nil]);
end;
if FTRParamsChanged then
begin
FTRParamsChanged := False;
GenerateTPB(FTRParams, TPB, FTPBLength);
if FTPBLength > 0 then
begin
IBAlloc(FTPB, 0, FTPBLength);
Move(TPB[1], FTPB[0], FTPBLength);
end;
end;
pteb := nil;
IBAlloc(pteb, 0, DatabaseCount * SizeOf(TISC_TEB));
try
for i := 0 to DatabaseCount - 1 do if Databases[i] <> nil then
begin
pteb^[i].db_handle := @(Databases[i].Handle);
pteb^[i].tpb_length := FTPBLength;
pteb^[i].tpb_address := FTPB;
end;
//Здесь он и запарывается :(
if Call(isc_start_multiple(StatusVector, @FHandle,
DatabaseCount, PISC_TEB(pteb)), False)> 0 then
begin
FHandle := nil;
IBDataBaseError;
end;
if not (csDesigning in ComponentState) then
MonitorHook.TRStart(Self);
finally
FreeMem(pteb);
end;
end;
GekaNaz (2004-12-09 10:48:00) [6]Спасибо,
сделал, скомпилил,
только вот теперь не могу стартануть транзакцию после дисконнекта
говорит, что хост принудительно разорвал соединение
GanibalLector (2004-12-08 01:15:00) [7]http://ibase.ru/fibc/ibx_disc.htm
GekaNaz (2004-12-07 17:36:00) [8]для GanibalLector © (07.12.04 12:54) [4]
поискал, но не могу найти , если не сложно, напиши как называется тема или статья, или лучше ссылку закинь, буду очень благодарен ...
а на счет Д7, так прога колом встаёт, и больше не хочет работать после дисконнекта :(
GanibalLector (2004-12-07 12:58:00) [9]У тя Д7,а там,по слухам все исправленно.Проверь!Я делал для Д5,вот там,действительно был обрыв с AV
GanibalLector (2004-12-07 12:54:00) [10]статья ивана_ра не рабочая.На ibase.ru найди еще одну...вот по ней и действуй.Я по ней творил...все заработало!Успехов.
З.Ы. А с Иваном_РА сидел неделю...так нифига и не получилось :(
Johnmen (2004-12-07 12:16:00) [11]Если исходники InterBase, то обращайся к сишникам.
Если исходники компонент доступа к IB, то удали все дку'шки, потом скомпилируй проект.
ЮЮ (2004-12-07 11:48:00) [12]и его перекомпили :)
GekaNaz (2004-12-07 11:45:00) [13]Как скомпилировать исправленные исходники InterBase ??? подскажите пожалуйста !