Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit DLL / Übergabe (https://www.delphipraxis.net/122107-problem-mit-dll-uebergabe.html)

DeddyH 10. Okt 2008 10:34

Re: Problem mit DLL / Übergabe
 
Blieb noch die bereits angesprochene Möglichkeit.

Infamous 15. Okt 2008 11:02

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.

Infamous 15. Okt 2008 11:29

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:
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);
In der DLL:

Delphi-Quellcode:
function Funktion_in_der_DLL(var1, var2: Double): PChar;
begin
    Result := '...';
end;
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?
PChar kann man doch auch so verarbeiten mit DLLs, ohne ShareMem von Borland...?

mirage228 15. Okt 2008 11:37

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.

Infamous 15. Okt 2008 11:41

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.

sirius 15. Okt 2008 12:54

Re: Problem mit DLL / Übergabe
 
Zitat:

Zitat von Infamous
Mit IStrings wäre es zwar komfortabler, aber dass es auf anderen System auch funktioniert ist wohl wichtiger.

Du kannst ja die StdVCLxx.DLL mit ausliefern und bei der Installation registrieren. GEnausogut kannst du aber, wie gesagt, auch die DLL zum speichermanager mitnehmen und einfach die Stringliste normal verwenden. Oder eben, wie jetzt, über widestring mit entsprechendem Comfortverlust.

Infamous 21. Okt 2008 16:37

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?

sirius 21. Okt 2008 16:53

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 hier beschrieben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 Uhr.
Seite 2 von 2     12   

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