AGB  ·  Datenschutz  ·  Impressum  







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

Generische Ableitung einer Klasse

Ein Thema von s.h.a.r.k · begonnen am 5. Jul 2011 · letzter Beitrag vom 6. Jul 2011
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Generische Ableitung einer Klasse

  Alt 5. Jul 2011, 14:55
Delphi-Version: XE
Hallo zusammen,

wollte gerade sowas hier schreiben, nur leider klappt das nicht:
Delphi-Quellcode:
TThreadedObject<T: class> = class(T)

end;
Der Cursor bleibt hinter dem T bei class(T) stehen und der Compiler meldet:
Code:
[DCC Fehler] ApCore.Classes.pas(68): E2021 Klassentyp erwartet
Weiß jemand warum das so ist?

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.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Generische Ableitung einer Klasse

  Alt 5. Jul 2011, 14:58
Wie wäre es mit

Delphi-Quellcode:
TThreadedObject<T: class> = class

end;
? o.O

Edit: Achso.. du meinst das anders.. Ne.. das geht nicht..
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

AW: Generische Ableitung einer Klasse

  Alt 5. Jul 2011, 15:00
Und warum nicht?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Generische Ableitung einer Klasse

  Alt 5. Jul 2011, 15:16
Wie soll man die Klasse denn programmieren?

Du kannst keine Methoden überschreiben, du weißt nicht welche Methoden/Properties/Variablen dir zur Verfügung stehen.. Du weißt gar nichts. Wie willst du denn auf dieser Grundlage eine Klasse ableiten/implementieren?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.747 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Generische Ableitung einer Klasse

  Alt 5. Jul 2011, 15:32
Du kannst keine Methoden überschreiben, du weißt nicht welche Methoden/Properties/Variablen dir zur Verfügung stehen.. Du weißt gar nichts. Wie willst du denn auf dieser Grundlage eine Klasse ableiten/implementieren?
Will/braucht er ja auch nicht:
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.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Generische Ableitung einer Klasse

  Alt 5. Jul 2011, 15:45
Das hat doch nichts damit zu tun was er will oder braucht

Der Ansatz an sich macht (OOP-technisch) keinen Sinn.

Für sowas sind Class-Helper gedacht.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.747 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Generische Ableitung einer Klasse

  Alt 5. Jul 2011, 17:24
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;
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Generische Ableitung einer Klasse

  Alt 5. Jul 2011, 17:48
@uligerhardt

nett ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  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 07:15 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 by Thomas Breitkreuz