Article View: pl.comp.lang.delphi
Article #346676Jak przekazać NULL do funkcji biblioteki DLL
From: mwitkowski2b
Date: Mon, 23 Jul 2018 07:09
Date: Mon, 23 Jul 2018 07:09
47 lines
2905 bytes
2905 bytes
Mam do wykorzystania bibliotekę DLL, do której mam API, która zawiera np. deklarację funkcji jak poniżej:
int GetPicture(UCHAR ucInstance,
UCHAR* pucImage,
UINT* puiBufSize,
UINT* puiWidth,
UINT* puiHeight );
Przy pierwszym wywołaniu mam podać jako drugi parametr pucImage=NULL, trzeci puiBufSize=0.
Nie jestem pewien czy podanie wartości 0 jest równoznaczne z wartością NULL?
Próbuję coś takiego, najpierw tworze sobie odpowiedni typ do wskazania tej funkcji oraz zmienną, która będzie jej adres zawierać:
Type_GetPicture = function(ucInstance: UCHAR;
pucImage: PUCHAR;
puiBufSize: PUINT;
puiWidth: PUINT;
puiHeight: PUINT
) : Integer; stdcall;
var
GetPicture : Type_GetPicture;
Ładuję bibliotekę DLL dynamicznie, pobieram adres funkcji z dll do GetPicture, po czym ją wywołuję w następujący sposób:
var
iSize: Integer;
pucImage: UCHAR;
puiBufSize: UINT;
puiWidth: UINT;
puiHeight: UINT;
...
lInstance:= 1;
pucImage:= 0;
puiBufSize:=0;
puiWidth:= 0;
puiHeight:= 0;
iSize := ob.GetPicture(lInstance,
@pucImage,
@puiBufSize,
@puiWidth,
@puiHeight);
Czy to jest prawidłowe przekazanie wartości NULL do funkcji?
Czy moja deklaracja funkcji w Delphi odpowiada deklaracji z biblioteki DLL?
Technical Details
Message-ID:
<a8f14f86-85d7-4e11-ac08-fa595894e6d0@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!d7-v6no1377itj.0!news-out.google.com!l67-v6ni0itl.0!nntp.google.com!d7-v6no1373itj.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Received: by 2002:a6b:8452:: with SMTP id g79-v6mr4661319iod.38.1532329767266; Mon, 23 Jul 2018 00:09:27 -0700 (PDT) X-Received: by 2002:aca:c6ca:: with SMTP id w193-v6mr642648oif.1.1532329767006; Mon, 23 Jul 2018 00:09:27 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!d7-v6no1377itj.0!news-out.google.com!l67-v6ni0itl.0!nntp.google.com!d7-v6no1373itj.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.delphi Date: Mon, 23 Jul 2018 00:09:26 -0700 (PDT) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=91.192.196.210; posting-account=E-z6ZwoAAACYsJZxZNjBCrM3zzyF6Vo_ NNTP-Posting-Host: 91.192.196.210 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <a8f14f86-85d7-4e11-ac08-fa595894e6d0@googlegroups.com> Subject: Jak przekazać NULL do funkcji biblioteki DLL From: mwitkowski2b@gmail.com Injection-Date: Mon, 23 Jul 2018 07:09:27 +0000 Lines: 53 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit