AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zugriff auf DLL Procedure von DLL interner Form
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf DLL Procedure von DLL interner Form

Offene Frage von "AGuther"
Ein Thema von AGuther · begonnen am 8. Jun 2005 · letzter Beitrag vom 8. Jun 2005
Antwort Antwort
AGuther

Registriert seit: 29. Nov 2004
2 Beiträge
 
Delphi 2005 Personal
 
#1

Zugriff auf DLL Procedure von DLL interner Form

  Alt 8. Jun 2005, 00:08
Hallo zusammen!

Ich habe eine Frage, weil ich nicht mehr weiterkomme. Ich bin dabei, eine DLL mit Delphi zu erstellen, die integrierte Forms hat. Jetzt habe ich aber folgendes Problem: ich möchte von der Form aus eine Funktion oder Prozedur in der DLL starten, aber ich weiss nicht wie ich auf diese Zugriff bekommen kann. Ich hoffe mir kann jemand helfen. Ich hab den Quelltext auch angehängt.

Code der DLL selbst:
Delphi-Quellcode:
library DienstplanRDP_DLL;
uses
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  ComObj,
  Frm_Info in 'Frm_Info.pas{Frm_Test};
var
  oXL: Variant;

  {$R *.res}

procedure DLL_Init();stdcall;
begin
  oXL := GetActiveOleObject('Excel.Application');
end;

procedure DLL_Terminate();stdcall;
begin
  oXL := Unassigned;
end;

procedure Test_Excel();stdcall;
var
  Tmp: String;
begin
  Frm_Test := TFrm_Test.Create(nil);
  oXL.ActiveSheet.Cells[2, 1] := 'Test DLL';
  Tmp := oXL.ActiveSheet.Cells[1,1];
  ShowMessage(Tmp);
  Frm_Test.ShowModal;
end;

procedure Test_Frm(Tmp: String);stdcall;
begin
  ShowMessage(Tmp);
end;

exports
  DLL_Init, DLL_Terminate, Test_Excel, Test_Frm;

begin
end.
Code des Forms, integriert in das Projekt für die DLL:
Delphi-Quellcode:
unit Frm_Info;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TFrm_Test = class(TForm)
    Btn_OK: TButton;
    Txt_Box1: TEdit;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Btn_OKClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Frm_Test: TFrm_Test;

implementation

{$R *.dfm}

procedure TFrm_Test.Btn_OKClick(Sender: TObject);
begin
// Hier sollte der Aufrauf einer Funktion stehen!?
   Frm_Test.Close;
end;

procedure TFrm_Test.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

end.

Ich hoffe von Euch hat jemand eine Idee

Vielen Dank und Gruß
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Zugriff auf DLL Procedure von DLL interner Form

  Alt 8. Jun 2005, 08:17
Da ändert sich eigentlich nichts zum normalen aufrufen von "Form-Funktionen"...
würde dir schon fast empfehlen in den DLL Code sowas zu schreiben:

Delphi-Quellcode:
initialization
Frm_Test:= TFrm_Test.Create;

finalization
Frm_Test.free;
dann kannst du innerhalb deiner DLL die Form einfach nur mit Frm_Test.MachWas aufrufen...

die Sache ist eben das du zum Aufrufen deiner Funktionen eine Inztanz der Form brauchst...


Greetz
Boombuler
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Zugriff auf DLL Procedure von DLL interner Form

  Alt 8. Jun 2005, 08:18
Hallo Andreas,

deine Form Frm_Test kann nur auf solche Funktionen zugreifen, die im interface einer Unit aufgeführt sind. Erzeuge einfach eine Unit SharedU und kopiere die gewünschten Funktionen dort hinein. Wenn du diese Unit dann in die uses-Liste deiner Unit Frm_Info aufnimmst, solltest du keine Probleme mehr mit dem Aufruf haben.

Grüße vom marabu
  Mit Zitat antworten Zitat
AGuther

Registriert seit: 29. Nov 2004
2 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Zugriff auf DLL Procedure von DLL interner Form

  Alt 8. Jun 2005, 11:57
Hallo!

Vielen Dank erst mal für eure nette Hilfe!

Verstehe ich es richtig, dass es im Prinzip keine Möglichkeit gibt auf die Funktionen die unter Library stehen direkt zuzugreifen, oder? Ich muss also eine neue Unit anlegen und von beiden (also von der Library und von der Form) darauf zugreifen, oder?
Schöner würde ich es halt finden, wenn es direkt gehen würde, denn sonst müsste ich für Funktionen die ich von der DLL aus aufrufen möchte ja jeweils ne kleine Procedure schreiben...geht halt dann über 2 Ecken...

Vielleicht noch ne Idee?

Danke und Gruß
Andreas
  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 06:34 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