Article View: pl.comp.lang.delphi.bazy-danych
Article #81204Delphi i Oracle przez oci.dll
From: immo
Date: Tue, 27 Nov 2018 06:14
Date: Tue, 27 Nov 2018 06:14
58 lines
1723 bytes
1723 bytes
Witam, Tak dla "zabawy" przenoszę sobie jeden obiekt z C++Buildera na Delphi. Łączy się on z Oracle przez funkcje zawarte w oci.dll. I ogólnie wszystko działało do momentu przepisania funkcji OCILogon deklarowanej jako: //sword OCILogon (OCIEnv *envhp, OCIError *errhp, OCISvcCtx **svchp, // const OraText *username, ub4 uname_len, // const OraText *password, ub4 passwd_len, // const OraText *dbname, ub4 dbname_len); function OCILogon( envhp: Pointer; errhp: Pointer; var svchp: Pointer; username: Pointer; uname_len: ub4; password: Pointer; passwd_len: ub4; dbname: Pointer; dbname_len: ub4 ): sword; cdecl; external WINDOWS_DLL_LOCATION; Niestety za nic nie chce mi to zadziałać w Delphi, pomimo że w C++Builderze działa poprawnie. W Delphi jako result dostaję zawsze -1. Funkcję wywołuję tak: _retCode := OCILogon( OCIEnvHP, OCIErrHP, OCISrvCHP, @_otu, _otuL, @_otp, _otpL, @_otd, _otdL ); Gdzie _otu, _otp, _otd to TByteArray _otuL, _otpL, _otdL to ub4 (czyli LongInt). OCIEnvHP, OCIErrHP i OCISrvCHP to pointery i pierwsze dwa są poprawnie ustawione przez OCIInitialize i OCIEnvInit. Czy ktoś się kiedykolwiek bawił w dostęp do oracla za pomocą oci.dll? Nigdzie w necie nie mogę znaleźć jakichś przykładów użycia tego. A to co znalazłem, nie miało zdefiniowanego OCILogon. Oczywiście jeśli "zabawa" nie przyniesie rezultatu to użyję ODACa, ale nie o to chodzi :) pozdrawiam, Przemek O.
Message-ID:
<a1ed2220-017c-491a-8e6e-fa3476b3a332@googlegroups.com>
Path:
polish.pugleaf.net!archive.newsdeef.eu!archive!apf9.newsdeef.eu!not-for-mail