AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein DLL als Erweiterung für mein Programm
Thema durchsuchen
Ansicht
Themen-Optionen

DLL als Erweiterung für mein Programm

Ein Thema von F.W. · begonnen am 25. Jul 2004 · letzter Beitrag vom 27. Jul 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#11

Re: DLL als Erweiterung für mein Programm

  Alt 26. Jul 2004, 18:04
Aha! Nagut.

Ich habe ein bestehendes Programm (für mein Netzwerk) versucht mit einer DLL auzustatten, weil oft Updates kommen und da ist es praktisch, wenn eben nur der dauerupdateteil der in der DLL liegt durch ein Update der DLL geupdatet wird. (Viele updates was? )

1. Das Programm darf nur einmal starten, dafür hab ich folgenden Code verwendet:
Delphi-Quellcode:
Initialization //Verhindern, dass das Programm mehrmals gestartet wird
 mHandle := CreateMutex(nil, True, 'LANTool_NoDes.exe');
 if GetLastError = ERROR_ALREADY_EXISTS then begin
    MessageDlg('LAN-Tool ist schon gestartet!!', mtInformation, [mbOk], 0);
    Halt;
 end;

finalization
 if mHandle <> 0 then CloseHandle(mHandle);
Seit dem Hinzufügen der DLL kommt grundsätzlich die Messagebox.

2.Ich greife von der DLL auf ein Formular zu (das Formular, wo die function für die DLL deklariert ist), allerdings kommen da Zugriffsverletzungen aus der DLL -> Was machen?

Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

Re: DLL als Erweiterung für mein Programm

  Alt 26. Jul 2004, 18:06
Zum Thema Formulare in DLL's kuck dir mal das DLL Tutorial von Assarbad an: http://www.luckie-online.de/Downloads/Importe/Assarbad/
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#13

Re: DLL als Erweiterung für mein Programm

  Alt 26. Jul 2004, 18:42
Hi!

Zum Thema Plugin für die eigene Anwendung:
http://www.delphipraxis.net/internal...ect.php?t=5390

Evtl. ist das ein anderer Ansatz, weiß ich leider nicht, aber vielleicht hilft es ja.

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#14

Re: DLL als Erweiterung für mein Programm

  Alt 26. Jul 2004, 18:46
@Luckie: Wie ich Formulare in DLLs bekomme weiß ich, aber meine DLL greift auf das TRichEdit im MainFormular zu. Also ich denke mal, dass es daran liegt.
Nochmal meine Frage: Ist es möglich aus einer DLL auf Objekte der Anwendung zuzugreifen? Und wenn ja, wie sieht dann das Musterbeispiel aus?

Ich habe bisher nur die Unit des Hauptformulars in die Uses-Klausel der DLL-Unit eingegeben.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#15

Re: DLL als Erweiterung für mein Programm

  Alt 26. Jul 2004, 20:59
Zitat von F.W.:
Ich habe bisher nur die Unit des Hauptformulars in die Uses-Klausel der DLL-Unit eingegeben.
Das wird so nicht klappen. Woher soll die kompilierte DLL die Komponenten deiner Hauptform kennen. Über gib einen Zeiger der des Richedits an die Funktion in der DLL:
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#16

Re: DLL als Erweiterung für mein Programm

  Alt 27. Jul 2004, 19:54
Ich habe jetzt eine Funktion SetPointer in die DLL aufgenommen, mit der wird im OnCreate des Progs das Hauptfenster (darauf greift die DLL auch noch zu bzw. soll sie) und ein TRichEdit übergeben:

Auszug aus DLL:
Delphi-Quellcode:
uses
  SysUtils, Forms, ComCtrls, Graphics,
  Main_Unit;

var
 TheRichEdit: TRichEdit;
 TheMain: TMain;

  function SetPointer(ARichEdit: TRichEdit; AMain: TMain): Boolean; export;
  function SetSettings(S: String): Boolean; export;
  procedure Schreibe(S: String; AFont: TFont); export;

implementation

function SetPointer(ARichEdit: TRichEdit; AMain: TMain): Boolean; export;
begin
 Result := False;
 TheMain := AMain;
 TheRichEdit := ARichEdit;
 Result := True;
end;
Allerdings musste ich, weil ich ja TMain angegeben habe die Main_Unit (Hauptformular des Progs) mit reinnehmen.
Aber so funktioniert es nicht. Muss ich vielleicht als Übergabeparameter Pointer nehmen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 00:09 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