🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Delphi i Oracle przez oci.dll

#82977
From: immo
Date: Tue, 27 Nov 2018 14:14
51 lines
2671 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.
Technical Details
Message-ID: <a1ed2220-017c-491a-8e6e-fa3476b3a332@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!k10no78277itk.0!news-out.google.com!v141ni74ita.0!nntp.google.com!q69no78327itb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Received: by 2002:a6b:6418:: with SMTP id t24mr553225iog.3.1543328086763;        Tue, 27 Nov 2018 06:14:46 -0800 (PST)
X-Received: by 2002:a9d:24c3:: with SMTP id z61mr12456ota.1.1543328086457; Tue, 27 Nov 2018 06:14:46 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!k10no78277itk.0!news-out.google.com!v141ni74ita.0!nntp.google.com!q69no78327itb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.delphi.bazy-danych
Date: Tue, 27 Nov 2018 06:14:46 -0800 (PST)
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=77.65.27.242; posting-account=uWBjDgoAAACxkgIP6dtE4dpCnc16V86n
NNTP-Posting-Host: 77.65.27.242
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <a1ed2220-017c-491a-8e6e-fa3476b3a332@googlegroups.com>
Subject: Delphi i Oracle przez oci.dll
From: immo <przemek-o@soft-system.pl>
Injection-Date: Tue, 27 Nov 2018 14:14:46 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit