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.