AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Mit DLL Menü-Einträge auf fremder Form erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Mit DLL Menü-Einträge auf fremder Form erstellen

Ein Thema von Nju · begonnen am 8. Feb 2008 · letzter Beitrag vom 8. Feb 2008
Antwort Antwort
Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#1

Mit DLL Menü-Einträge auf fremder Form erstellen

  Alt 8. Feb 2008, 11:07
Hallo,
ich spiele gerade mit selbsterstellten DLLs rum und experimentiere mit deren Möglichkeiten. Dabei hänge ich an folgendem Problem fest.

Ich habe eine Base-DLL-Datei mit folgender Funktion:

Delphi-Quellcode:
function menuentries_add(Target: TComponent): byte; stdcall;
var
  Menue: TMainMenu;
  Item_Hilfe: TMenuItem;
begin
  Menue := TMainMenu.Create(Target);
    Item_Hilfe := TMenuItem.Create(Menue);
    Item_Hilfe.Caption := 'Test';
    Menue.Items.Add(Item_Hilfe);
end;
Problem ist, wenn ich aus einer Form (sprich: fremdes Projekt, welches auf die DLL zugreift) diese Funktion aufrufen möchte, passiert erstmal nichts. Beim Schließen der Anwendung hagelt es dann Access Violations und ein Runtime Error.

Aufrufen tu ich die Funktion so:

  Fmenuentries_add(frm_Main); Wenn ich den Funktionsaufruf mit den 4 Zeilen aus der Funktion ersetze (genauso wie das "Target" mit "frm_Main"), dann funktioniert es ohne Probleme. Schätze mal, dass es irgendwie an der Variable "Target" liegt, aber eine Lösung will mir partout nicht einfallen.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Mit DLL Menü-Einträge auf fremder Form erstellen

  Alt 8. Feb 2008, 11:10
Hast du die Unit Sharemem in beiden Projekten eingebunden? (Ansonsten funktioniert dein Konzept nicht)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#3

Re: Mit DLL Menü-Einträge auf fremder Form erstellen

  Alt 8. Feb 2008, 11:19
AFAIK kannst Du in DLLs keine Objekte als Parameter zur bzw. von der Hauptanwendung übergeben. Du müsstest also eine BPL erstellen. Da ich das selbst aber noch nie gemacht habe, kann ich nur auf die Hilfe verweisen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#4

Re: Mit DLL Menü-Einträge auf fremder Form erstellen

  Alt 8. Feb 2008, 11:23
Alles klar, denn das Hinzufügen von "Sharemem" produzierte weitere Fehlermeldung (Ungültige Zeigeroperation). Dann werde ich mich mal mit BPL beschäftigen. Vielen Dank.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Mit DLL Menü-Einträge auf fremder Form erstellen

  Alt 8. Feb 2008, 11:27
Zitat von Nju:
Alles klar, denn das Hinzufügen von "Sharemem" produzierte weitere Fehlermeldung
Dürfte eigentlich nicht wenn du Sharemem wie es beschrieben ist in beiden Projekten (dpr-Datei) als erste Unit angibst.

Dennoch ist es eben nicht sinnvoll eine DLL mit Delphi-spezifischen Schnittstellen zu erstellen. Da ist eine BPL die bessere Wahl.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Mit DLL Menü-Einträge auf fremder Form erstellen

  Alt 8. Feb 2008, 12:59
Verwendung von "lebenden" Objekten über DLL-Grenzen hinweg wird nur "geschmeidig" funktionieren wenn gemeinsame Runtimepackages verwendet werden. Ansonsten ist DLL.TObject <> Exe.TObject und jeder is/as-Cast schlägt fehl.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Nju

Registriert seit: 16. Jun 2004
41 Beiträge
 
#7

Re: Mit DLL Menü-Einträge auf fremder Form erstellen

  Alt 8. Feb 2008, 14:03
Zitat von Bernhard Geyer:
Verwendung von "lebenden" Objekten über DLL-Grenzen hinweg wird nur "geschmeidig" funktionieren wenn gemeinsame Runtimepackages verwendet werden.
Wie genau ist das gemeint und worauf muss ich da genau achten?
  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 09:27 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