Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi C Funktion aus DLL in Delphi nutzen (https://www.delphipraxis.net/157807-c-funktion-aus-dll-delphi-nutzen.html)

zeras 25. Jan 2011 18:56

Delphi-Version: 2009

C Funktion aus DLL in Delphi nutzen
 
Hallo,

ich möchte eine C DLL ansprechen und der C Kontrukt sieht so aus:

extern "C" BOOL WINAPI GetAV(
const char *name,
long* address
);

Umgeschrieben habe ich das so:

Delphi-Quellcode:

arDataTcp = array[0..255] of char;

function GetAV(
           const name : arDataTcp;
           address    : LongWord
         ): LongBool stdcall;
Aufruf dann

Delphi-Quellcode:
var
  s : arDataTcp;
  Adr : LongWord;

begin
  StrPCopy(s,'ISS');
  if LslGetAdressVar(&s, &Adr) then begin
  end
Ich bekomme dann immer Zugriffsverletzung bei Lesen von Adresse xxxxx.
Was mache ich falsch?

turboPASCAL 25. Jan 2011 19:10

AW: C Funktion aus DLL in Delphi nutzen
 
Code:
extern "C" BOOL WINAPI GetAV(
const char *name,
long* address
);
Lässt sich eher so übersetzen:
Delphi-Quellcode:
function GetAV(Name: PChar; Address: Pointer): bool; stdcall;
bzw.:
Delphi-Quellcode:
function GetAV(Name: PChar; Address: pLongint): bool; stdcall;

zeras 25. Jan 2011 19:46

AW: C Funktion aus DLL in Delphi nutzen
 
Zitat:

Zitat von turboPASCAL (Beitrag 1077287)
Code:
extern "C" BOOL WINAPI GetAV(
const char *name,
long* address
);
Lässt sich eher so übersetzen:
Delphi-Quellcode:
function GetAV(Name: PChar; Address: Pointer): bool; stdcall;
bzw.:
Delphi-Quellcode:
function GetAV(Name: PChar; Address: pLongint): bool; stdcall;


Danke: Scheint zu gehen. Nun muss ich nur noch die richtigen Adressen haben und kann weiter testen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz