AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Klassen Wegoptimieren abschalten ?

Ein Thema von moelski · begonnen am 30. Nov 2010 · letzter Beitrag vom 1. Dez 2010
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

AW: Klassen Wegoptimieren abschalten ?

  Alt 1. Dez 2010, 07:58
Moin !

Zitat:
Leider hast du nirgends erklärt wozu du Strings in Objekte umwandeln möchtest
Wir haben in unserer Anwendung RS232 Geräte eingebunden. Die Geräteklassen sorgen dafür das die Rohdaten der Geräte geprüft / verworfen / umgerechnet / ... werden.

Wenn der User nun sein Gerät auswählt hatte ich folgende Idee:
Ich durchsuche per RTTI alle vorhandenen Klassen. Und die Klassen die entweder einer bestimmten Namenkonvention folgen oder ein spezielles Attribut haben gebe ich dem User zur Auswahl.
Er selektiert dann sein Gerät (und damit die Geräteklasse) und ich nutze eben die Auswahl um meine Klasseninstanz zu erstellen.

Das hätte den Vorteil das man weitere Geräte hinzufügen kann, ohne sich an anderer Stelle Gedanken über die Einbindung zu machen.
Neue Geräte würden automatisch erkannt und dem User angeboten.

Derzeit haben wir ein Konstrukt das eben so ausschaut:
if name = 'test1' then Geraet := TLVTest1.Create.....

Aber wie geschrieben muss man dort bei jedem Gerät dafür sorgen das es eben auch dort eingetragen wird.
Ist sicher kein riesen Aufwand, aber ich wollte eben mal einen neuen Weg testen
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#2

AW: Klassen Wegoptimieren abschalten ?

  Alt 1. Dez 2010, 08:18
Was passiert, wenn zufällig irgendeine Klasse, welche mit deiner Nutung rein garnichts zu tun hat, zufällig einen passenden Klassennamen oder dieses Attribut besitzt?

Besser wäre es, wenn diese Klasse also z.B. von einem bestimmten Vorfahren abgeleitet ist, damit du direkt über diesen Vorfahren zugreifen kannst (nötige Methoden per virtual+override hinzugefügt).
Somit könnte man auch noch "sicherer" prüfen, ob die Klasse auch über die gewünschten Funktionen verfügt.

Wenn man da nun eh eine Unit (mit der Basisklasse) einbinden muß, dann wäre es ein Leichtes, dort eine Registrierungsstelle anzubieten, wo neue Klassen registriert werden.

Und schon hat man keinerlei Probleme mehr.
- registrierte (benutzte) Klassen werden nicht wegoptimiert
- die überschriebenen Methoden und in der Basisklasse verwendeten Methoden, beiben ebenfalls erhalten
- man hat nun eine wunderschöne und extrem leicht zu durchsuchende Liste alle wichten Klassen
und muß nun auch keine der anderen zigtausend Klassen rausfiltern, welche die RTTI unnötiger Weise mit auflistet.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 1. Dez 2010 um 09:05 Uhr)
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Klassen Wegoptimieren abschalten ?

  Alt 1. Dez 2010, 08:24
Moin !

Eine Basisklasse habe ich.

type TInputDevice = class
...
end;

Und alle Geräteklassen sind davon abgeleitet:
type TLVUDP50 = class(TInputDevice)
...
end;

Zitat:
dort eine Registrierungsstelle anzubieten
Das würde ich wie machen ?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Klassen Wegoptimieren abschalten ?

  Alt 1. Dez 2010, 08:31
Zitat:
dort eine Registrierungsstelle anzubieten
Das würde ich wie machen ?
Definiere ein Register-Funktion denen du die Klasse übergibst:

Delphi-Quellcode:
type
  TInputDeviceClass = class of TInputDevice;

var
  ReisteredDevices: TObjectList;

procedure Register Device(DeviceClass: TInputDeviceClass)
begin
  ReisteredDevices.Add(DeviceClass);
end;

Mit neuen Delphi-Versionen könntest du natürlich mit Generics bei RegisteredDevices arbeiten um das ganze gecaste zu ersparen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#5

AW: Klassen Wegoptimieren abschalten ?

  Alt 1. Dez 2010, 09:14
Bei Register Device ist bestimmt ausversehn ein Leerzeichen reingerutscht.

Und dann einfach nur noch die Klassen da registrieren, wo sie erstellt wurden.
Delphi-Quellcode:
type
  TMyInputDevice = class(TInputDevice)

  end;

  ...

initialization
  RegisterDevice(TMyInputDevice);

end.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz