Hallo zusammen,
ich habe schon diverse Beiträge zu dem Thema gefunden, aber die Angaben sind widersprüchlich.
Ich habe folgende stark vereinfachte Klassendefinition
Delphi-Quellcode:
type
TMesswert = class(TObject)
Belastung : Real;
Strom : Real;
end;
TMesswertListe = class( TObjectList<TMesswert> )
public
constructor Create( OwnsObjects: Boolean = true );
end;
TAnalyse = class(TObject)
private
FNr : Integer;
FStatus : Integer; // In Wirklichkeit Enum
FTitel : String;
FTestunit : String;
FMesswerte : TMesswertList;
public
property FNr : Integer read Nr write Nr ;
property FTitel : String read Titel write Titel ;
property FTestunit : String read Testunit write Testunit ;
constructor Create;
destructor Destroy; override;
end;
TAnalyseList = class(TObjectList<TAnalyse> )
private
function Compare( const L,R: TAnalyse) : Integer;
public
constructor Create( OwnsObjects: Boolean = true );
end;
TBatch = class(TObject)
private
FNr : Integer;
FAnalysen : TAnalyseList;
public
property FNr : Integer read Nr write Nr ;
constructor Create;
destructor Destroy; override;
end;
Im angedachten Fall soll
- eine DLL aufgerufen und dieser die komplette Instanz von TBatch übergeben werden.
- Die EXE erzeugt für jede gewünschte Belastung einen Eintrag in TMesswertList
- Nach der Übergabe von TBatch an die DLL soll diese anhand von Testunit die korrekte Testunit starten und dann für jede Belastung den zugehörigen Strom messen und in der Liste eintragen.
- Sobald fertig, wird der Status von TAnalyse auf asMeasured gesetzt und EXE weiß, dass sie jetzt damit weiter machen kann.
- Testunit ist in Wirklichkeit eine weitere Klasse (Gerät, Schnittstelle, ...)
- Es sollte auch möglich sein, dass die EXE eine weitere Analyse an TBatch anhängt während die DLL die schon eingetragenen Analysen abarbeit. Auch diese neue Analyse wird von DLL automatisch vermessen.
Es bestehen folgende Voraussetzungen
- Die Klasse wird in der EXE angelegt
- Werte sollen sowohl in der EXE als auch der DLL geändert werden
- EXE und DLL werden bei jeder Änderung in exakt derselben Umgebung kompiliert
- Auf Mitgabe von Packages soll wenn möglich verzichtet werden
- Entwicklungsumgebung Delphi XE
Mein Problem ist nur die Frage, wie ich die Klasse korrekt an die
DLL übergeben muss damit beide Seiten darin arbeiten können.
Gibt es ein Möglichkeit, so was zu realisieren?
Mit Klassen fühle ich mich noch unsicher und mit Interfaces habe ich noch nie gearbeitet. Von daher wäre ich für eine konkrete Antwort, an liebsten mit Beispiel, sehr dankbar.
Grüße
Gerd