Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi .net DLL in Delphi für Win32 nutzen (https://www.delphipraxis.net/71442-net-dll-delphi-fuer-win32-nutzen.html)

XChris 15. Jun 2006 11:06


.net DLL in Delphi für Win32 nutzen
 
Hallo,

kennt wer ein nettes Turtorial, wo ich mir anschauen kann, wie man eine .net DLL in delphi nutzt? Für eine kleine Hilfestellung wäre ich dankbar.

Chris

mkinzler 15. Jun 2006 11:10

Re: .net DLL in Delphi für Win32 nutzen
 
Schau mal hier

Bernhard Geyer 15. Jun 2006 11:21

Re: .net DLL in Delphi für Win32 nutzen
 
Da der Sourceforge-Teil nicht sehr aktiv is empfehle ich dir mal Managed VCL anzuschauen wenn Du nicht über den generellen "Umweg" über COM-Wrapper gehen willst.

XChris 15. Jun 2006 12:08

Re: .net DLL in Delphi für Win32 nutzen
 
Holla, danke für die schnellen Tips.

Ich habe ein fertiges Win32 Programm und brauch aus einer DLL nur einige Methoden aufrufen. Diese geben meist nur INTEGER, DOUBLE BOOL oder STRING zurück. Irgendwie muss doch wer 2 bsp. Codesnipsel haben ...

Chris

XChris 16. Jun 2006 08:20

Re: .net DLL in Delphi für Win32 nutzen
 
Hallo,

ich bin ein Stück weiter. Bekomme aber in der Win32 Delpi Anwendung eine Fehler (Zugriff ins Leere ...)

Hier mein Code:

NET.dll:


Delphi-Quellcode:
unit Envisys.TestMich;
interface
uses System.Runtime.InteropServices;
type
[ComVisible(true)]
TestMich = class
private
{ Private-Deklarationen }
strict protected

public
constructor Create;
class function GetA(): Integer; static;
end;

implementation
constructor TestMich.Create;
begin
inherited Create;

// TODO: Hier die Konstruktorlogik einfügen
end;

[ComVisible(true)]
class function TestMich.GetA: Integer;
begin
result := 5;
end;
end.

dann hab ich in dem Verzeichniss wo die Anwendung liegt regasm.exe netstuff.dll aufgerufen. Nun will ich sie in delphi (Win32) nutzen:


Delphi-Quellcode:
unit Test;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
ComObj;

const NET_DLL='NetStuff.dll';
function GetA(): integer; stdcall; external NET_DLL;

type
TForm1 = class(TForm)
LabelName: TLabel;
procedure Button1Click(Sender: TObject);

private

public
{ Public-Deklarationen }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
LabelName.Caption:= IntToStr(GetA());
end;

end.
Was mach ich nur falsch? Ich denke, der Zugriff in Win32 auf das ComObject ist falsch. Kann wer helfen?

Bernhard Geyer 16. Jun 2006 08:30

Re: .net DLL in Delphi für Win32 nutzen
 
Zitat:

Zitat von XChris
Was mach ich nur falsch? Ich denke, der Zugriff in Win32 auf das ComObject ist falsch. Kann wer helfen?

Das stimmt. Du greift wie auf eine "normale" DLL zu. Für COM-Objekte mußt du die Typbibliothek (Projekte/Typbibliothek importieren) importieren und dann über das COM-Interface darauf zugreifen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 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