AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi DLL in Delphi ansprechen - Zugriff auf Variabeln
Thema durchsuchen
Ansicht
Themen-Optionen

DLL in Delphi ansprechen - Zugriff auf Variabeln

Ein Thema von ThE_-_BliZZarD · begonnen am 26. Nov 2007 · letzter Beitrag vom 5. Dez 2007
Antwort Antwort
ThE_-_BliZZarD

Registriert seit: 15. Sep 2006
Ort: Wiesbaden/Hessen
89 Beiträge
 
Delphi 2010 Professional
 
#1

DLL in Delphi ansprechen - Zugriff auf Variabeln

  Alt 26. Nov 2007, 15:12
Hallihallo,

ich habe eine Frage zum Zugriff auf eine Funktion in einer DLL.

Die DLL ist in C geschrieben und liefert folgende Funktion:
Code:
WandExport MagickBooleanType MagickGetSize(const MagickWand *wand,
  unsigned long *columns,unsigned long *rows)
{
  *columns=5;
  *rows=6;
  return(MagickTrue);
}
In dieser Funktion geht es mir primär um die zwei unsigned long. Das sind doch Pointer oder?

In Delphi habe ich momentan folgenden Import:

Delphi-Quellcode:
function MagickGetSize(wand: PMagickWand; cols, rows : PCardinal): MagickBooleanType; cdecl; external 'blub.dllindex 311;

// Der Zugriff auf die Werte in der Funktion erfolgt dann wie folgt:
procedure BlaBlub();
var
ori_width, ori_height: Cardinal;
begin
// Wand ist vom Typ PMagickWand und ist initalisiert etc pp.. da kann der Fehler nicht liegen
if (MagickGetSize(wand, @ori_width, @ori_height) = MagickTrue) then begin
   showmessage('blub'); // WIRD angezeigt
end;
// Leider steht in ori_width und ori_height nichts drinne..
end;
Was mache ich falsch? Die Index-nummer habe ich via Disassembler verifiziert, die stimmt.. Leider habe ich von C nicht viel Ahnung.

HELP!^^
MSVC2008 (C/C++ with QT), Delphi RAD 2010, Flash CS5 (FDT/Adobe), Java EE (Eclipse), PHP5
Antwortsprachen: Deutsch, Englisch, Französisch, Japanisch
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: DLL in Delphi ansprechen - Zugriff auf Variabeln

  Alt 26. Nov 2007, 15:19
Hallo,

ich nehme bei Pointern immer var


function MagickGetSize(wand: PMagickWand; var cols, rows : Cardinal): MagickBooleanType; cdecl; external 'blub.dllindex 311; Dann ist auch der Aufruf einfacher (kein Pointer notwendig).

Ausserdem würde ich mal statt dem cdecl mal stdcall versuchen.


Heiko
Heiko
  Mit Zitat antworten Zitat
ThE_-_BliZZarD

Registriert seit: 15. Sep 2006
Ort: Wiesbaden/Hessen
89 Beiträge
 
Delphi 2010 Professional
 
#3

Re: DLL in Delphi ansprechen - Zugriff auf Variabeln

  Alt 26. Nov 2007, 16:23
Hmm also die Änderung mit var und so hat auch nichts gebracht.. Wie könnte ich den vielleicht die DLL debuggen? Damit ich sehen kann ob da überhaupt ein richtiger Wert drinne steht?
MSVC2008 (C/C++ with QT), Delphi RAD 2010, Flash CS5 (FDT/Adobe), Java EE (Eclipse), PHP5
Antwortsprachen: Deutsch, Englisch, Französisch, Japanisch
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#4

Re: DLL in Delphi ansprechen - Zugriff auf Variabeln

  Alt 26. Nov 2007, 17:17
Hi Blizzard,

hmm. Ein Doppelpost nur weil keiner antwortet?

Hast Du Dir denn schon mal das angesehen?
ImageMagick Delphi Wrapper

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
ThE_-_BliZZarD

Registriert seit: 15. Sep 2006
Ort: Wiesbaden/Hessen
89 Beiträge
 
Delphi 2010 Professional
 
#5

Re: DLL in Delphi ansprechen - Zugriff auf Variabeln

  Alt 26. Nov 2007, 18:14
@Doppelpost: hmm ja der andere war mehr darauf bezogen ob jemand konkrete Ahnung mit ImageMagick hat... hier gings mir mehr drum ob ich vielleicht was beim importen der C header falsch gemacht hab... Sry

@Die Wrapper: ja schonmal reingeguckt, aber der erzeugt ja eine ganze Komponente, das will ich gar nicht.. ich will mehr eine Kommandozeilenanwendung haben.. Da kann ich eine Komponente nicht brauchen..
MSVC2008 (C/C++ with QT), Delphi RAD 2010, Flash CS5 (FDT/Adobe), Java EE (Eclipse), PHP5
Antwortsprachen: Deutsch, Englisch, Französisch, Japanisch
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: DLL in Delphi ansprechen - Zugriff auf Variabeln

  Alt 26. Nov 2007, 18:17
Wenn die Funktion wirklich so kurz ist, kannst du sie doch in der CPU-Ansicht debuggen. Falls du Assembler nicht verstehst, könntest du die Mnemonics auch einfach hier posten.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: DLL in Delphi ansprechen - Zugriff auf Variabeln

  Alt 26. Nov 2007, 18:33
Zitat von hoika:
Ausserdem würde ich mal statt dem cdecl mal stdcall versuchen.
Und warum? Weil die C-Funktion als cdecl deklariert ist, würdest du es mit stdcall versuchen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: DLL in Delphi ansprechen - Zugriff auf Variabeln

  Alt 26. Nov 2007, 18:54
Zitat von ThE_-_BliZZarD:
@Die Wrapper: ja schonmal reingeguckt, aber der erzeugt ja eine ganze Komponente, das will ich gar nicht.. ich will mehr eine Kommandozeilenanwendung haben.. Da kann ich eine Komponente nicht brauchen..
Ist doch kein Problem. Nimm einfach nur die Unit ImageMagickAPI raus und du hast alles was du brauchst.
Diese Unit ist zwar relativ gross, macht deine Anwendung aber nicht grösser, das fast alles nur Deklarationen sind.
Nur wenn du diese quasi "offizielle" API Übersetzung nimmst, kann die Sache gutgehen.
Andreas
  Mit Zitat antworten Zitat
ThE_-_BliZZarD

Registriert seit: 15. Sep 2006
Ort: Wiesbaden/Hessen
89 Beiträge
 
Delphi 2010 Professional
 
#9

Re: DLL in Delphi ansprechen - Zugriff auf Variabeln

  Alt 5. Dez 2007, 22:29
Ok danke

Der Wrapper von http://www.simdesign.nl/components/imagemagick.html funktioniert mit etwas Ärger sehr gut..
MSVC2008 (C/C++ with QT), Delphi RAD 2010, Flash CS5 (FDT/Adobe), Java EE (Eclipse), PHP5
Antwortsprachen: Deutsch, Englisch, Französisch, Japanisch
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:13 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