FComPortProperty : TStrings;
Der Bezeichner scheint mir unglücklich gewählt. Es wird nicht klar, was das darstellt und warum das nun ein TStrings ist.
Hier würde sich in der Tat ein
Record anbieten:
Delphi-Quellcode:
TComPortSettings = record
ComPort : string; // z.B. 'COM3'
BaudRate: Integer; // evtl. auch ein Aufzählungstyp
DataBits: Integer; // 7 oder 8
Parity: Char; // N=None, E=Even, O=Odd oder evtl. auch ein Aufzählungstyp
...
end;
Da bin ich mir nicht so sicher. Welchen Vorteil hat der Recird gegenüber dem einbauen in die Klasse?
Zitat:
Die perfekte Lösung wäre also die, dass die Klasse TMB100 die Einstellungen für die serielle Schnittstelle überhaupt nicht zu kennen braucht, sondern sie braucht nur zu wissen welche
COM-Port-Komponente sie benützen soll.
Stichwort:
Dependency Injection
Dem schließe ich mich allerdings wieder an. Das wäre *deutlich* besser.
Baudrate, Parität, Flow, Start, Stop, Stopbit, Databit: string;
Warum denn Strings? Dafür gibts Aufzählungstypen!
Delphi-Quellcode:
Destructor TMB100.destroy;
begin
inherited;
end;
- das Schlüsselwort "descructor" klein, der Bezeichner "Destroy" groß, nicht umgekehrt
- wenn du im Destruktor eh nur inherited aufrufst, brauchst du ihn nicht nochmal zu deklarieren. Er wird ja einfach geerbt
Uaah... Böser Code Smell. Bitte was soll den Hardware=0 sein? So macht man das nicht. Praktischerweise bin ich gerade dabei, einen Blog-Artikel genau über diese Problematik zu schreiben. Wenn der fertig ist (hoffentlich noch heute), sag ich dir Bescheid.
ComPort1.BaudRate := StrToBaudRate(FMB100.ComPort.Baudrate);
Auch so Konstruktionen kommen mir sehr komisch vor. Ich hab aber immer noch nicht ganz verstanden, was du vor hast.
Zitat:
Genau das eben nicht. Ich werde später mehrer Klassen schreiben. Je nach angeschlossener und Lizenzierter Hardware, wird die entsprechende Klasse genommen und die Einstellungen der Hardware der ComPort Komponente zugewiesen. Die Anwendung und der Dienst sollen später 4 Ports verarbeiten. In der aktuellen Entwicklungsphase mache ich das zur Zeit folgendermaßen...
Ich bin mir nicht sicher, ob du verstanden hast, was DependencyIncection ist. Du gewinnst dadurch Flexibilität. "Genau das eben nicht" scheint mir nicht zu stimmen. Im Gegenteil. Erklär mal, was du mit deinen Klassen vor hast. Wie sollen sie sich unterscheiden. Kann sein, dass da schon ein Problem steckt. Ich hab da so ne Ahnung...
mfg
Christian