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 Generische Ableitung einer Klasse (https://www.delphipraxis.net/161479-generische-ableitung-einer-klasse.html)

Stevie 5. Jul 2011 16:13

AW: Generische Ableitung einer Klasse
 
Ein Template, wie Uli es gebaut hat, geht auch ohne weiteres in Delphi. Das hat aber noch lange nix mit Generics zu tun, nur weil Generics mithilfe von Templates implementiert sind.Diese Frage gab es auch mal bei Stack Overflow.

uligerhardt 5. Jul 2011 16:24

AW: Generische Ableitung einer Klasse
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1110074)
Ziel des ganzen ist es einer beliebigen Klasse eine CriticalSection samt Lock/Unlock-Methoden zu spendieren, ohne da jetzt jedes erst von der Klasse ableiten zu müssen und den kompletten Code immer wieder zu schreiben.

Vielleicht kannst du Arme-Leute-RAII mittels Interfaces nutzen. Ich hab z.B. sowas für die temporäre Anzeige von Cursorn:
Delphi-Quellcode:
interface

type
  ICursorGuard = interface
  end;

function GuardCursor(NewCursor: TCursor = crHourGlass): ICursorGuard;

implementation

type
  TCursorGuard = class(TInterfacedObject, ICursorGuard)
  private
    FOldCursor: TCursor;
  public
    constructor Create(NewCursor: TCursor);
    destructor Destroy; override;
  end;

{ TCursorGuard }

constructor TCursorGuard.Create(NewCursor: TCursor);
begin
  inherited Create;
  FOldCursor := Screen.Cursor;
  Screen.Cursor := NewCursor;
end;

destructor TCursorGuard.Destroy;
begin
  Screen.Cursor := FOldCursor;
  inherited Destroy;
end;

function GuardCursor(NewCursor: TCursor = crHourGlass): ICursorGuard;
begin
  Result := TCursorGuard.Create(NewCursor);
end;
Das kannst du dann so aufrufen:
Delphi-Quellcode:
procedure Test;
var
  Guard: ICursorGuard;
begin
  Guard := GuardCursor;
  //Mach was langwieriges
end;

// oder sogar so:
procedure Test;
begin
  GuardCursor;
  //Mach was langwieriges
end;

Bummi 5. Jul 2011 16:48

AW: Generische Ableitung einer Klasse
 
@uligerhardt

nett .... :-D

BUG 5. Jul 2011 19:32

AW: Generische Ableitung einer Klasse
 
Ich hätte noch ne schmutzige Variante:

Man könnte doch über ein Map (zB eine Hashmap) Objektzeigern eine Critical Section zuordnen und dann lock und unlock doch über Class Helper einführen (Die Map sollte dann ihre eigene Critical Section haben bzw. Thread-safe sein.) :freak:

s.h.a.r.k 5. Jul 2011 20:55

AW: Generische Ableitung einer Klasse
 
@BUG: Die Idee hatte ich auch schon. Allerdings wird es dann dahingehend unschön, dass das mit der Freigabe dann so eine Sache wird. Wobei... eigentlich könnte man sowas schon machen, aber es werden am laufenden Band CriticalSections erzeugt, was dann wiederrum nicht so schön ist. Ich glaube ich bleibe bei meinen einzelnen Ableitungen :stupid:

QuickAndDirty 6. Jul 2011 08:26

AW: Generische Ableitung einer Klasse
 
Habe selbst maximal D2007 (auf einem anderen Arbeitsplatz) gibt es mittlerweile in fortschrittlicheren Delphiversionen so perverses zeug wie "Aspekte"? Und wäre das dann eine Lösung ?

Neutral General 6. Jul 2011 08:40

AW: Generische Ableitung einer Klasse
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1110221)
Habe selbst maximal D2007 (auf einem anderen Arbeitsplatz) gibt es mittlerweile in fortschrittlicheren Delphiversionen so perverses zeug wie "Aspekte"? Und wäre das dann eine Lösung ?

Sowas gibts in Delphi Prism soweit ich weiß. Im "normalen" Delphi gibt es sowas bisher nicht.

QuickAndDirty 6. Jul 2011 09:54

AW: Generische Ableitung einer Klasse
 
Dann hätte er es mit Delphi Prism hinbekommen können, oder?


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

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