Einzelnen Beitrag anzeigen

r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#8

AW: Aufbau eigene Klasse mit Property und TStrings

  Alt 30. Dez 2010, 15:54
      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: Bei Google suchenDependency 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

Delphi-Quellcode:
    case Hardware of
      0:
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
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat