🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #346676

Jak przekazać NULL do funkcji biblioteki DLL

#346676
From: mwitkowski2b
Date: Mon, 23 Jul 2018 07:09
47 lines
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-mail

Show 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