Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Klassen Wegoptimieren abschalten ? (https://www.delphipraxis.net/156386-klassen-wegoptimieren-abschalten.html)

moelski 1. Dez 2010 08:24

AW: Klassen Wegoptimieren abschalten ?
 
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 ?

Bernhard Geyer 1. Dez 2010 08:31

AW: Klassen Wegoptimieren abschalten ?
 
Zitat:

Zitat von moelski (Beitrag 1065301)
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.

himitsu 1. Dez 2010 09:14

AW: Klassen Wegoptimieren abschalten ?
 
Bei
Delphi-Quellcode:
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.

stahli 1. Dez 2010 12:16

AW: Klassen Wegoptimieren abschalten ?
 
Ich weiß jetzt nicht, ob es noch evtl. Erkenntnisgewinn bringt, aber ich erzeuge Komponenten nach Klassennamen in D2009 so:
Delphi-Quellcode:
type

  Tod = class(TComponent)
    ...
  end;

  TodXxx = class(Tod)
    ...
  end;

  TodYyy = class(Tod)
    ...
  end;

  TodClass = class of Tod; // !!!

Irgendwo müssen die zu verwendenden Klassen registriert werden (z.B. im initialization-Teil einer Unit - dann muss die Unit in das Projekt eingebunden werden):
Delphi-Quellcode:
  RegisterClasses([TodXxx]);
  RegisterClasses([TodYyy]);

Erzeugen des Objektes dann über:
Delphi-Quellcode:
  if (not Assigned(od)) and (ItemsClassName <> '') then
  begin
    FindClass(ItemsClassName);
    od := TodClass(GetClass(ItemsClassName)).Create(Self);
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz