![]() |
Re: Problem mit DLL / Übergabe
Blieb noch die bereits
![]() |
Re: Problem mit DLL / Übergabe
Hab ich gerade gemerkt... auf einem anderem PC läufts nicht, es kommt eine Fehlermeldung -> "Bibliothek nicht registriert" (mit den IStrings).
Dann probier ich es jetzt mal mit der anderen Möglichkeit. |
Re: Problem mit DLL / Übergabe
Auch wenn ich einen ganz normalen PChar übergeben will (was doch auch ohne extra Bibl. gehen sollte??), gibt es eine Zugriffsverletzung.
In der EXE:
Delphi-Quellcode:
uses Schnittstelle;
variable_PChar := Funktion_in_der_Schnittstelle(var1, var2); In der Schnittstelle:
Delphi-Quellcode:
In der DLL:
function Funktion_in_der_Schnittstelle(var1, var2: Double): PChar;
type TBerechnung = function (var1, var2: Double): PChar;stdcall; [...DLLladen...] [...Zeiger auf die Function in der DLL...] Result := Variable_mit_Zeiger_auf_die_Funktion(var1, var2);
Delphi-Quellcode:
Es geht, bis ich in der EXe wieder auf die variable_PChar zugreifen will, dann kommt der Zugriffsfehler. Bis dahin wurde die Variable aber nicht gefüllt. Result in der DLL hat gestimmt, wurde aber dann nicht richtig übergeben. Also ist die Variable in der EXE leer. Wie mach ich das dann, dass es richtig übergeben wird?
function Funktion_in_der_DLL(var1, var2: Double): PChar;
begin Result := '...'; end; PChar kann man doch auch so verarbeiten mit DLLs, ohne ShareMem von Borland...? |
Re: Problem mit DLL / Übergabe
Entweder machst du in DLL und Hauptprogramm "stdcall" hin oder in keinem von beiden. Gemischt geht nicht ;)
Viele Grüße P.S.: Du kannst auch "WideString" anstatt PChar verwenden... das klappt problemlos über DLLs. |
Re: Problem mit DLL / Übergabe
Ja habs oben vergessen, in der DLL steht auch stdcall.
Ok, WideString... ich probiere es... es klappt :) Mit IStrings wäre es zwar komfortabler, aber dass es auf anderen System auch funktioniert ist wohl wichtiger. |
Re: Problem mit DLL / Übergabe
Zitat:
|
Re: Problem mit DLL / Übergabe
Ja habe es jetzt mit WideStrings gemacht. Da gibt es aber keine Probleme, wenn man die DLL mit einer anderen programmiersprache aufrufen muss, oder? Also WideStrings sind Delphi-unabhänig?
|
Re: Problem mit DLL / Übergabe
Ja, Widestring ist eine Windowssache. Und die ist ziemlich nett gekapselt von Delphi. Die Funktionen dazu (die man bei Delphi nicht wissen muss) sind
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 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 by Thomas Breitkreuz