DLL-Import: Procedure Configure

Antworten
abacom
Site Admin
Beiträge: 3335
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

DLL-Import: Procedure Configure

Beitrag von abacom » Montag 13. Oktober 2008, 11:03

Mike D



Anmeldungsdatum: 03.07.2006
Beiträge: 236

Verfasst am: 03.07.2006 13:03 Titel: DLL-Import: Procedure Configure

--------------------------------------------------------------------------------

Hallo,
ich möchte in einer mit Delphi geschriebenen DLL die Procedure Configure nutzen. Mit der MessageBox aus dem C++ Beispiel geht das auch, macht aber nicht viel Sinn. Wenn ich versuche ein eigenes Fenster mit der Procedure darzustellen kommt eine Zugriffsverletzungs-Meldung wenn man im Eigenschaften-Dialog von DLL-Import auf Einstellungen klickt.
Hat schon jemand mit irgend einer Programmiersprache erfolgreich Configure genutzt?

Mike

Nach oben


abacom
Site Admin


Anmeldungsdatum: 30.06.2006
Beiträge: 898

Verfasst am: 04.07.2006 18:33 Titel: DLL CONFIG

--------------------------------------------------------------------------------

Hier die versprochene Ergänzung zum Delphi-DLL-Beispiel, das die Verwendung von CONFIGURE demonstriert:

Der Dialog "Dlg_CounterConfig" kann wie gewohnt mit dem Delphi-Formular-Editor erzeugt werden, und enthält ein Edit-Feld "ValueEdit" zum Einstellen des Counter-Startwertes "PUser^[InitialCount]"
und zwei Buttons "OK" und "Abbrechen".

Der komplette Quelltext wird im nächsten Internetupdate enthalten sein.

Hier nur die Änderungen gegenüber dem bisherigen Beispiel.

Code:
uses
(...,)
Dlg_CounterConfig in 'Dlg_CounterConfig.pas' {CounterConfigDlg};
(...)

const
(...)
InitialCount = 3; // index user variable INITIALCOUNT
DLLIndex = 100; // DLL No. set by ProfiLab
(...)

Procedure Configure(PUser: PDLLParams);
var DLG: TCounterConfigDlg;
begin
//Create user dialogue
DLG:=TCounterConfigDlg.Create(nil);
With DLG do
begin
// Show ProfiLab DLL-Index in dialogue caption
Caption:='Counter [DLL'+FloatToStr(PUser^[DLLIndex])+']';
// Set dialogue values
ValueEdit.Text:=FloatToStr(PUser^[InitialCount]);
// Execute dialogue
if ShowModal=mrOK then
begin
// Read values from dialogue
PUser^[InitialCount]:=StrToInt(ValueEdit.Text);
end;
// Free dialogue
free;
end;
end;

(...)
exports
(...)
Configure;


ABACOM support

Nach oben


abacom
Site Admin


Anmeldungsdatum: 30.06.2006
Beiträge: 898

Verfasst am: 20.08.2006 21:19 Titel:

--------------------------------------------------------------------------------

ExpertProfi bietet eine DLL mit Delphi-Source auf seiner Homepage an, die ebenfalls mit CONFIGURE arbeitet:

http://www.expertprofi.ag.vu/elektor_usb_uart.html

ABACOM support

Nach oben


abacom
Site Admin


Anmeldungsdatum: 30.06.2006
Beiträge: 898

Verfasst am: 23.04.2007 13:42 Titel:

--------------------------------------------------------------------------------

In C++ sieht es ähnlich aus:

Code:


#include "ConfigDialog.h"
USEFORM("ConfigDialog.cpp", CounterConfigDlg);

(...)

void _stdcall CConfigure(double *PUser)
{
CounterConfigDlg = new TCounterConfigDlg(Application);
CounterConfigDlg->Caption = "Counter [DLL"+FloatToStr(PUser[DLLIndex])+"]";
CounterConfigDlg->ValueEdit->Text = FloatToStr(PUser[InitialCount]);
if ( CounterConfigDlg->ShowModal() == IDOK )
{
PUser[InitialCount] = StrToInt(CounterConfigDlg->ValueEdit->Text);
};
delete CounterConfigDlg;
}
ABACOM support

Antworten

Zurück zu „DLL-Programmierung“