Einzelnen Beitrag anzeigen

js747a

Registriert seit: 11. Aug 2008
Ort: Nord hessen
43 Beiträge
 
Delphi 7 Enterprise
 
#1

Daten von DLL van Hauptanwendung schicken

  Alt 8. Jul 2020, 15:53
In meinem Programm geschrieben mit Delphi 7 kommuiziere ich mit einer Modellbahnzentrale(IntellyBox)
Unter Delphi 7 geht alles wunderbar.
In Delphi 10.3 geht es nicht. Immer wieder sind die Daten von der IntellyBox nicht in ordnung.
Ich möchte in delphi 7 die Unit zur Communication mit der Zentrale in eine DLL auslagern und dann in meinem Programm in Delphi 10.3 gebrauchen.
Ich habe erstmal ein Kleines Programm zum Testen geschrieben.

***DLL
unit DLLUnit;

interface

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

type

TDllForm = class(TForm)
Button1: TButton;
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;

type
String30= String[30];

var
DllForm: TDllForm;

function ZeigeForm(S : String30): Boolean; export;
procedure ZeigeTextInDLL(S : String30); export;

implementation

{$R *.DFM}

function ZeigeForm(S : String30): Boolean; export;
Begin
DllForm:=TDllForm.Create(NIL);
DllForm.Show;
DllForm.Label1.Caption := S;
End;

procedure ZeigeTextInDLL(S : String30); export;
Begin
DllForm.Label1.Caption := S;
End;

end.

***ZeigeForm offnet die DLLForm
***ZeigeTextInDLL zeigt den Text von der Hauptanwendung in Label1 der DllForm

***Hauptanwendung
unit HAUPTUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
String30= String[30];

THauptForm = class(TForm)
Button1: TButton;
Label1: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
HauptForm: THauptForm;

implementation

function ZeigeForm(S : String30): Boolean; external 'PROJECTDLL.DLL';

procedure ZeigeTextInDLL (S : String30); external 'PROJECTDLL.DLL';

{$R *.DFM}

procedure THauptForm.Button1Click(Sender: TObject);
var x : Boolean;
begin
x := ZeigeForm(Label1.Caption);
end;


procedure THauptForm.Button2Click(Sender: TObject);
begin
ZeigeTextInDLL ('Text Von HauptForm Button2');
end;

end.

***Button1Click ofnnet die DLLForm
***Button2Click Zeigt den Text ('Text Von HauptForm Button2') an in DLLForm

Ich kann Daten von dem Hauptprogramm in der DLLForm anzeigen. (THauptForm.Button2Click)

Aber ich bekomme es nicht hin Daten von der DLLForm an das Hauptprogramm zu schicken.
  Mit Zitat antworten Zitat