Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];

Вниз

Подключение к Oracle 10g в библиотеке   Найти похожие ветки 

 
tytus ©   (2007-01-23 16:14) [0]

Доброго дня мастера. В главной программе вызываю длл-ку, в которой при создании формы подключаюсь к ораклу
OracleSession1.LogOn; Форма модальная. В обработчике OnClose
делаю OracleSession1.logOf;
При повторном вызове библиотеки появляется ошибка:
<EOracle Error with message "".>
Вот текст основной программы:
procedure TMainFm.ReportSelectExecute(Sender: TObject);
var
 LibHandle:THandle;
 ShowRepParamsFm:TShowRepParamsFm;
begin
LibHandle:=LoadLibrary("TGCompRpt.dll");
if LibHandle=0 then
begin
 Raise Exception.Create("Could not load TGCompRpt.dll");
 Exit;
end;
@ShowRepParamsFm:=GetProcAddress(LibHandle,"ShowRepParamsFm");
if not(@ShowRepParamsFm=nil) then
begin
 ShowRepParamsFm(Handle);
end;
FreeLibrary(LibHandle);
end;
Если вместо FreeLibrary делать LibHandle:=0, то все нормально, но сие неправильно имхо...
Как сделать толково?


 
Desdechado ©   (2007-01-23 16:41) [1]

try-finally неплохо бы вставить
и протрассировать работу DLL


 
tytus ©   (2007-01-23 17:26) [2]

>Desdechado ©   (23.01.07 16:41) [1]
procedure TRepParamsFm.FormCreate(Sender: TObject);
var
 ST:_SYSTEMTIME;
 DT:TDateTime;
 SqlStmt:string;
 LCount:integer;
begin
try
OS1.LogOn;//<--сюда ругается...
except
 MessageBox(Handle,PChar(OS1.ErrorMessage(OS1.ReturnCode)),
   "Ошибка подключения",MB_OK+MB_SYSTEMMODAL);
 ModalResult:=mrOK;  
end;
SB1.Panels[0].Text:=OS1.LogonUsername;
SB1.Panels[1].Text:=OS1.LogonDatabase;

В главной проге трай-файнали не помогает... и не помогало, потому и убрал за ненадобностью.


 
Desdechado ©   (2007-01-23 17:41) [3]

1. Не вижу описания типов.
2. Не понятно, откуда взят приведенный код.
3. Почему бы подключение ни сделать ДО создания формы. И при удаче создавать форму, а принеудаче - потстреливаться назад.

> В главной проге трай-файнали не помогает.
Не помогает от чего? Он нужен, чтобы выгрузка библиотеки происходяла в любом случае, а не в случае успешного вызова функции.


 
tytus ©   (2007-01-23 17:53) [4]

>Desdechado ©   (23.01.07 17:41) [3]
текст ДЛЛ
юзесы, типы... и т.д.

procedure ShowRepParamsFm(AHandle:THandle);

{var
 RepParamsFm: TRepParamsFm;}

implementation

{$R *.dfm}

procedure ShowRepParamsFm(AHandle:THandle);
var
 RepParamsFm: TRepParamsFm;
begin
Application.Handle:=AHandle;
RepParamsFm:=TRepParamsFm.Create(Application);
RepParamsFm.ShowModal;
end;

Далее текст OnCreate из [2]

Основная прога

type
 TShowrepParamsFm=procedure(AHandle:THandle);

Далее идет описание из вопроса.

>Не помогает от чего? Он нужен, чтобы выгрузка библиотеки происходяла в любом случае, а не в случае успешного вызова функции.

да понятно это, непонятно почему ПЕРВЫЙ раз коннектится, а ПОСЛЕДУЮЩИЕ разы - ошибка! И почему LibHndle:=0 устраняяет ошибку, и какие последствия будут (память не вернется системе, что-ли, а если приложение закрыть, то память вернется?)


 
Desdechado ©   (2007-01-23 19:10) [5]

procedure ShowRepParamsFm(AHandle:THandle);
var
RepParamsFm: TRepParamsFm;
begin
Application.Handle:=AHandle;
RepParamsFm:=TRepParamsFm.Create(Application);
RepParamsFm.ShowModal;
end;

Тут утечка памяти, бесхозное соединение с Ораклом после закрытия формы и непонятное поведение Application.Handle (т.к. не восстановлено в оригинальное значение)

> юзесы, типы... и т.д.
И где описано OS1

> почему LibHndle:=0 устраняяет ошибку
Не устраняет, а маскирует и отодвигает "на потом".


 
tytus ©   (2007-01-24 09:16) [6]

>Desdechado ©   (23.01.07 19:10) [5]
procedure ShowRepParamsFm(AHandle:THandle);
var
 RepParamsFm: TRepParamsFm;
begin
Application.Handle:=AHandle;
RepParamsFm:=TRepParamsFm.Create(Application);
try
 RepParamsFm.ShowModal;
finally
 RepParamsFm.OS1.LogOff;
 FreeAndNil(RepParamsFm);
end;
OS1- TOracleSession;
С этим вариантом тоже не проходит.
Может вся фигня в том, что на моей тачке XP SP2, а сам Оракл работает под управлением 2000?!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.044 c
15-1174580946
oldman
2007-03-22 19:29
2007.04.15
Я всегда пользовался NERO (и подобными продуктами)


15-1174387551
zdm
2007-03-20 13:45
2007.04.15
КААТАСТРОФФФААААА!!!, хэлп


15-1174168299
ElectroMagnetizm
2007-03-18 00:51
2007.04.15
Ищу книгу


9-1146341758
Pa5ha
2006-04-30 00:15
2007.04.15
Солнце на OpenGL


15-1174563889
Смаг
2007-03-22 14:44
2007.04.15
Запоздалая медицинская помощь





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский