AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Delphi & DLL & Pointern

Ein Thema von iaby · begonnen am 16. Mär 2006 · letzter Beitrag vom 16. Mär 2006
 
iaby

Registriert seit: 30. Nov 2002
Ort: BW
258 Beiträge
 
#1

Problem mit Delphi & DLL & Pointern

  Alt 16. Mär 2006, 13:37
hallo zusammen,

ich habe ein Problem und zwar will ich mit Delphi Funktionen einer .DLL-Datei nutzen. Alles soweit ja
eigentlich kein Problem, jedoch habe ich den Eindruck, dass mit der Parameterbergabe an die DLL
(insbesondere mit zu Üergebenden Pointern) etwas schief geht.
ich habe hier einmal exemplarisch das Header-File für C, was ich versucht habe, nach Delphi zu übersetzen:
Code:
...
PCIMFB2_API BOOLEAN pcimfb2InitBoards(BYTE *a_bAnzBoards);
PCIMFB2_API BOOLEAN _stdcall pcimfb2InitBoardsStdCall(BYTE *a_bAnzBoards);
...
und meine .PAS-Datei (jeweils nur Auszüge):

Delphi-Quellcode:
...
function pcimfb2InitBoards(var a_bAnzBoards: Byte): boolean; external 'PCIMFB2.dllname 'pcimfb2InitBoards';

...

//Aufrufen der Funktion im Hauptprogramm
var Anzahl: Byte;
begin
pcimfb2InitBoards(Anzahl);
showmessage(IntToStr(Anzahl));
...
die Funtkion pcimfb2InitBoards erwartet als einzigen Parameter also einen Pointer auf ein Byte.
Wie ich hier in den Foren gelesen habe, geschieht die Üergabe als Pointer in Delphi automatisch, wenn
ich die Variable im Funktions-kopf als "var" deklariere !?
Der Funktionsaufruf an sich gelingt dann zwar auch, allerdings schreibt er mir an die Stelle, auf die
der Pointer zeigt, nichts hinein (in einem C-Beispiel funktioniert es!). Es wird also immer die Zahl
ausgegeben, die schon vor Funktionsaufruf zugewiesen war (in diesem Fall 0).

Kann mir jemand helfen? Habe ich den Code überhaupt richtig nach Delphi bersetzt? Habe mit Pointer bis
jetzt nur in C Erfahrung und bin mir deshalb sehr unsicher!

Vielen Dank schonmal für Antworten im Voraus!


Gruss,
iaby



PS:
folgender Code führte auch nicht ans Ziel:
Delphi-Quellcode:
...
function pcimfb2InitBoards(a_bAnzBoards: Pointer): boolean; external 'PCIMFB2.dllname 'pcimfb2InitBoards';

...

//Aufrufen der Funktion im Hauptprogramm
var Anzahl: Byte;
begin
pcimfb2InitBoards(addr(Anzahl));
showmessage(IntToStr(Anzahl));
...
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz