🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi.bazy-danych
Article #81204

Delphi i Oracle przez oci.dll

#81204
From: immo
Date: Tue, 27 Nov 2018 06:14
58 lines
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