Article View: pl.comp.lang.delphi.bazy-danych
Article #82978Re: Delphi i Oracle przez oci.dll
From: Roman Tyczka
Date: Tue, 27 Nov 2018 19:23
Date: Tue, 27 Nov 2018 19:23
67 lines
2802 bytes
2802 bytes
On Tue, 27 Nov 2018 06:14:46 -0800 (PST), immo wrote:
> 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;
A nie powinno być może tak?
function OCILogon(
envhp: Pointer;
errhp: Pointer;
var svchp: Pointer;
const username: Pointer;
uname_len: ub4;
const password: Pointer;
passwd_len: ub4;
const dbname: Pointer;
dbname_len: ub4
): sword; cdecl; external WINDOWS_DLL_LOCATION;
I też warto sprawdzić stdcall, zdarzało mi się stdcall używać na dllkach
obcych, gdy cdecl nie działało. Choć głowy nie dam w czym były pisane, ale
warto sprawdzić.
> 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
z zerem na końcu? Wiem, że jest len podany, ale może wewnątrz tej metody
ktoś zahardcodował kopiowanie bufora + 1 bajt null terminatora i jest
wyjście poza bufor? :-)
--
pozdrawiam
Roman Tyczka
Technical Details
Message-ID:
<1968f1k2q7g7c$.dlg@tyczka.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailReferences:
<a1ed2220-017c-491a-8e6e-fa3476b3a332@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: Roman Tyczka <noemail@because.no> Newsgroups: pl.comp.lang.delphi.bazy-danych Subject: Re: Delphi i Oracle przez oci.dll Date: Tue, 27 Nov 2018 20:23:34 +0100 Organization: ATMAN - ATM S.A. Lines: 67 Sender: romek@tyczka.no.found Message-ID: <1968f1k2q7g7c$.dlg@tyczka.com> References: <a1ed2220-017c-491a-8e6e-fa3476b3a332@googlegroups.com> NNTP-Posting-Host: ip-94-75-90-137.wave.com.pl Mime-Version: 1.0 X-Trace: node1.news.atman.pl 1543346614 9058 94.75.90.137 (27 Nov 2018 19:23:34 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Tue, 27 Nov 2018 19:23:34 +0000 (UTC) User-Agent: 40tude_Dialog/2.0.15.84 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit