AGB  ·  Datenschutz  ·  Impressum  







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

DLL Datei, Button.Onclick Fehler

Ein Thema von Sascha_OW · begonnen am 5. Sep 2005 · letzter Beitrag vom 6. Sep 2005
Antwort Antwort
Sascha_OW

Registriert seit: 4. Aug 2005
Ort: Owschlag
129 Beiträge
 
Delphi 2005 Professional
 
#1

DLL Datei, Button.Onclick Fehler

  Alt 5. Sep 2005, 16:22
Hallo,

ich spiele gerade ein bisschen mit DLL Dateien rum, spielen deshalb weil es für mich neu ist und ich damit erstmal ein bisschen zurecht koemmen muss.

also folgenden ´mein Code ist:

Delphi-Quellcode:
library Project1;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muß die
  erste Unit im Uses-Anweisungsteil des Interface-Abschnitts Ihrer
  Unit sein, wenn Ihre DLL Prozeduren oder Funktionen exportiert, die
  String-Parameter oder Funktionsergebnisse übergeben. Dies gilt für
  alle Strings die an und von Ihrer DLL übergeben werden --  selbst
  für diese, die in Records oder Klassen verschachtelt sind. ShareMem
  ist die Schnittstellen-Unit zur DELPHIMM.DLL, welche Sie mit Ihrer
  DLL weitergeben müssen. Um die Verwendung von DELPHIMM.DLL zu
  vermeiden, übergeben Sie String-Parameter unter Verwendung von
  PChar- oder ShortString-Parametern. }


uses
  SysUtils,
  Classes,
  Unit1 in 'Unit1.pas',
  forms,
  Dialogs,
  stdctrls;


{$R *.RES}
 var Fenster :TForm;
function addiere(zahl1, zahl2: integer): integer; stdcall;
begin
  result:=zahl1+zahl2;
end;

procedure klick (sender: TObject);
begin
   Showmessage ('');
end;

procedure erstellen;
var
    btn :TButton;
    feld : TEdit;
begin
   Fenster := TForm.Create(Application);
   Fenster.Width := 1000;
   Fenster.Height := 1000;
   Fenster.left := 0;
   Fenster.top := 0;
   Fenster.caption := 'test';
   //Fenster.show;
   Fenster.visible := true;
   btn := TButton.Create (Fenster);
   btn.Parent := Fenster;
   Btn.Height := 125;
   Btn.Width := 125;
   Btn.left := 0;
   btn.top := 0;
   btn.visible := true;
   btn.caption := 'test';
   btn.show;
   btn.OnClick := klick;
   Feld := TEdit.Create (Fenster);

end;

exports
  addiere,
  klick,
  erstellen;
begin

end.

wenn ich diese DLL dann Compiliern will kommt folgender Fehler: .. Incompatible Typen : Methodenzeiger und reguläre Pocedure




wo ist jetz der Fehler wenn ich das in einer normalen Unit machen geht das....
Sascha Schwarz
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: DLL Datei, Button.Onclick Fehler

  Alt 5. Sep 2005, 16:42
Deine Prozedur "klick" ist keine Methode einer Klasse sondern einfach eine Prozedur. Bei Ereignissen wird aber eine Methode erwartet.

P.S. so wie du's hingeschrieben hast, würde es in einer normalen Unit auch nicht übersetzen!
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#3

Re: DLL Datei, Button.Onclick Fehler

  Alt 5. Sep 2005, 17:16
Desweiteren fehlt doch zweimal das stdcall, und ich meine mich zu erinnern dass es bei DLLs irgendwie Beschränkungen hinsichtlich globaler Variablen gab.
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: DLL Datei, Button.Onclick Fehler

  Alt 5. Sep 2005, 18:17
Zitat von tigerman33:
Desweiteren fehlt doch zweimal das stdcall
Wenn er die Routine Klick für ein Ereignis verwenden will, dann sollte er sie eben nicht als stdcall deklarieren.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Sascha_OW

Registriert seit: 4. Aug 2005
Ort: Owschlag
129 Beiträge
 
Delphi 2005 Professional
 
#5

Re: DLL Datei, Button.Onclick Fehler

  Alt 5. Sep 2005, 22:00
ja danke für die tipps aber ich habe immer noch nicht verstanden wie ich den Fehler jetz beseitige....
Sascha Schwarz
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: DLL Datei, Button.Onclick Fehler

  Alt 5. Sep 2005, 22:17
Hat jetzt keine Delphi-Tags, weil ich die Änderungen farblich hervorgehoben habe.

Code:
[color=red]type
  TMyForm = class(TForm)
  public
    procedure klick (sender: TObject);
  end;[/color]

var Fenster :T[color=red]My[/color]Form;

function addiere(zahl1, zahl2: integer): integer; stdcall;
begin
  result:=zahl1+zahl2;
end;

procedure [color=red]TMyForm.[/color]klick (sender: TObject);
begin
   Showmessage ('');
end;

procedure erstellen;
var
    btn :TButton;
    feld : TEdit;
begin
   Fenster := T[color=red]My[/color]Form.Create(Application);
   Fenster.Width := 1000;
   Fenster.Height := 1000;
   Fenster.left := 0;
   Fenster.top := 0;
   Fenster.caption := 'test';
   //Fenster.show;
   Fenster.visible := true;
   btn := TButton.Create (Fenster);
   btn.Parent := Fenster;
   Btn.Height := 125;
   Btn.Width := 125;
   Btn.left := 0;
   btn.top := 0;
   btn.visible := true;
   btn.caption := 'test';
   btn.show;
   btn.OnClick := [color=red]Fenster.[/color]klick;
   Feld := TEdit.Create (Fenster);

end;
Statt zu TMyForm könntest du auch eine beliebige andere Klasse definieren, zu der "Klick" als Methode gehört. Es müsste sogar auch als Klassenmethode gehen, d.h. du bräuchtest eigentlich noch nicht einmal ein Objekt dafür.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: DLL Datei, Button.Onclick Fehler

  Alt 5. Sep 2005, 22:22
Im DLL Tutorial von Olli wird erklärt, wie man eine Form in eine DLL auslagert: http://www.luckie-online.de/Develope...orte/Assarbad/
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Sascha_OW

Registriert seit: 4. Aug 2005
Ort: Owschlag
129 Beiträge
 
Delphi 2005 Professional
 
#8

Re: DLL Datei, Button.Onclick Fehler

  Alt 6. Sep 2005, 09:11
Habe das jetzt so gemacht wie ihr mir das gesagt habt, nun kann ich zwar die DLL Complieren aber in meinem Programm tritt ein Fehler auf:

Delphi-Quellcode:
library Project1;

{ Wichtiger Hinweis zur DLL-Speicherverwaltung: ShareMem muß die
  erste Unit im Uses-Anweisungsteil des Interface-Abschnitts Ihrer
  Unit sein, wenn Ihre DLL Prozeduren oder Funktionen exportiert, die
  String-Parameter oder Funktionsergebnisse übergeben. Dies gilt für
  alle Strings die an und von Ihrer DLL übergeben werden --  selbst
  für diese, die in Records oder Klassen verschachtelt sind. ShareMem
  ist die Schnittstellen-Unit zur DELPHIMM.DLL, welche Sie mit Ihrer
  DLL weitergeben müssen. Um die Verwendung von DELPHIMM.DLL zu
  vermeiden, übergeben Sie String-Parameter unter Verwendung von
  PChar- oder ShortString-Parametern. }


uses
  SysUtils,
  Classes,
  Unit1 in 'Unit1.pas',
  forms,
  Dialogs,
  stdctrls;


  type
  TFenster = class(TForm)
  public
    procedure klick (sender: TObject);
  end;

var Fenster :TFenster;
{$R *.RES}

function addiere(zahl1, zahl2: integer): integer; stdcall;
begin
  result:=zahl1+zahl2;
end;

procedure TFenster.klick (sender: TObject);
begin
   Showmessage ('');
end;

procedure erstellen ;
var
    btn :TButton;
    feld : TEdit;
begin
   Fenster := TFenster.Create(Application);
   Fenster.Width := 1000;
   Fenster.Height := 1000;
   Fenster.left := 0;
   Fenster.top := 0;
   Fenster.caption := 'test';
   //Fenster.show;
   Fenster.visible := true;
   btn := TButton.Create (Fenster);
   btn.Parent := Fenster;
   Btn.Height := 125;
   Btn.Width := 125;
   Btn.left := 0;
   btn.top := 0;
   btn.visible := true;
   btn.caption := 'test';
   btn.show;
   btn.OnClick := fenster.klick;
   Feld := TEdit.Create (Fenster);

end;

exports
  addiere,
  erstellen;
begin

end.
das ist die DLL und die Project datei:

Delphi-Quellcode:
unit test;

interface

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

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

var
  Form1: TForm1;

implementation
   function addiere(zahl1, zahl2: integer): integer; stdcall; external 'project1.dll';
   procedure erstellen; external 'project1.dll';
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  erstellen;
end;

end.
jetzt bekomme ich die Meldung: ... "Ressource TFenster nichtg gefunden..
Sascha Schwarz
  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 04:48 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