AGB  ·  Datenschutz  ·  Impressum  







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

Dll Forms... oder ligt es nicht daran ??

Ein Thema von dor557 · begonnen am 18. Aug 2007 · letzter Beitrag vom 30. Aug 2007
 
Benutzerbild von dor557
dor557

Registriert seit: 23. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Dll Forms... oder ligt es nicht daran ??

  Alt 18. Aug 2007, 14:43
erst mal meine dateien :

die Library :

Delphi-Quellcode:
library Kundendaten;


uses
  SysUtils,
  Classes,
  forms,
  kMain in 'kMain.pas{KundendatenF};
{$E dll}

{$R *.res}

Procedure PluginMain(Befehl : PChar; Parameter : Pointer); stdcall;
begin
  KundenDatenF := TKundenDatenF.Create(Application);
  try
    KundenDatenF.Show;
  finally
    KundenDatenF.Release;
  end;
end;

exports
 PluginMain;

begin
end.
so nun die KMain.pas :

Delphi-Quellcode:
unit kMain;

interface

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

type
  TKundendatenF = class(TForm)
    Button1 : TButton;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  KundendatenF: TKundendatenF;

implementation

{$R *.dfm}

end.
das sind die Daten gewesen aus der DLL.

Nun mache ich in der Hauptanwendung Folgendes :
ich habe mir eine unit Plugins angelegt die so aussieht :

Delphi-Quellcode:
unit plugins;

interface
uses SysUtils, windows, Dialogs, forms;

type TPlugin = procedure(Befehl : PChar; Parameter : Pointer); stdcall;
procedure PluginMain(Befehl : PChar; Parameter : Pointer);

implementation

procedure PluginMain(Befehl : PChar; Parameter : Pointer);
var Plugin: TPlugin;
    Handle: THandle;
begin
  Handle:=LoadLibrary(PChar(ExtractFilePath(ParamStr(0))+'..\lib\kundendaten.dll'));
  if Handle <> 0 then begin
    @Plugin := GetProcAddress(Handle, 'PluginMain');
    if @Plugin <> nil then begin
      Plugin(Befehl, Parameter);
    end;
    FreeLibrary(Handle);
  end;
end;

end.
und das Hauptfenster in der anwendung hat folgendes aussehen :

Delphi-Quellcode:
unit HostFenster;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
uses plugins;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  PluginMain('',nil);
end;

end.
jetzt sobald ich auf den Button1 klicke um das Plugin zu starten bekome ich folgenden Fehler (Keine Fehlermeldung)

Er erstellt das Formular. und das Verschwindet sogleich wieder.. Kann also nicht daran arbeiten.

Kann mir jemand sagen warum ?

gruss Sascha
Sascha Nickel
Man muss die Dinge nehmen wie sie kommen, man kann aber auch dafür sorgen das die dinge so kommen wie man sie nehmen möchte.
  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 17:56 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