AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi ständiges Typecasting bei Parametern
Thema durchsuchen
Ansicht
Themen-Optionen

ständiges Typecasting bei Parametern

Ein Thema von Cöster · begonnen am 8. Nov 2006 · letzter Beitrag vom 8. Nov 2006
Antwort Antwort
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#1

ständiges Typecasting bei Parametern

  Alt 8. Nov 2006, 19:18
Hi!

Ich übergebe Items[I] von einer von TObjectList abgeleiteten Klasse als Parameter an eine selbstgeschriebene Methode. Die Methode erwartet allerdings keinen Parameter vom Typ TObject, sondern vom eigenen Typen namens TItem. Nun muss ich immer, wenn ich Items[I] als Parameter an diese Methode übergebe "as TItem" hinzufügen.

Meine Fragen dazu:

1. Ist es möglich, dass der Rückgabewert von Items[I] nicht TObject sondern TItem immer ist? Denn die von TObjectList abgeleitete Klasse soll sowieso nur Objekte vom Typen TItem verwalten.

2. Wie macht man das am besten?

3. Ist das überhaupt ratsam? Geschwindigkeitsfressend?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: ständiges Typecasting bei Parametern

  Alt 8. Nov 2006, 19:27
Zitat:
1. Ist es möglich, dass der Rückgabewert von Items[I] nicht TObject sondern TItem immer ist? Denn die von TObjectList abgeleitete Klasse soll sowieso nur Objekte vom Typen TItem verwalten.
Natürlich
Zitat:
2. Wie macht man das am besten?
Am einfachsten den Getter überladen
Zitat:
3. Ist das überhaupt ratsam? Geschwindigkeitsfressend?
Nein man, sagt dem Compiler ja nur, wie er den Speicherbereich interpretieren soll.
Markus Kinzler
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#3

Re: ständiges Typecasting bei Parametern

  Alt 8. Nov 2006, 19:34
Zitat von Cöster:
1. Ist es möglich, dass der Rückgabewert von Items[I] nicht TObject sondern TItem immer ist? Denn die von TObjectList abgeleitete Klasse soll sowieso nur Objekte vom Typen TItem verwalten.
2. Wie macht man das am besten?
Mak aus den Fingern gesaugt:
Delphi-Quellcode:
type
  TSomeItemList = class(TObjectList)
  private
    function getItem(aIndex : Integer) : TSomeItem;
    procedure setItem(aIndex : Integer; aValue : TSomeItem);
  public
    property Item[aIndex : Integer] : TSomeItem
      read getItem(aIndex : Integer) : TSomeItem;
      write setItem(aIndex : Integer; aValue : TSomeItem);
  end;
function TSomeItemList.getItem(aIndex : Integer) : TSomeItem;
begin
  result := inherited Item[aIndex] as TSomeItem;
end;

procedure TSomeItemList.setItem(aIndex : Integer; aValue : TSomeItem);
begin
  inherited Item[aIndex] := aValue;
end;
Einfach weiterhin eine TObjectList, nur diesmal mit einem typisierten Indexer. 3. Ist das überhaupt ratsam? Geschwindigkeitsfressend? Ein Hard cast "TSomeItem(someValue)" kostet gar nix, außer der explicit-Operator wurde überschrieben.
Ein safe cast "(someValue as TSomeItem)" enthält eine Typenprüfung und kostet somit etwas. Aber es kostet nur minimal.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: ständiges Typecasting bei Parametern

  Alt 8. Nov 2006, 20:13
Danke, ich werd's nachher oder vll auch erst morgen mal ausprobieren.

Zitat von Elvis:
Ein Hard cast "TSomeItem(someValue)" kostet gar nix, außer der explicit-Operator wurde überschrieben.
Ein safe cast "(someValue as TSomeItem)" enthält eine Typenprüfung und kostet somit etwas. Aber es kostet nur minimal.
Interessanter Hinweis! Aber was ist ein explicit-Operator? Was ist der Sinn, Safe Cast zu benutzen, wenn's schlechter ist? Warum ist's safe und das andere hard? OK liegt wahrscheinlich daran, dass ich nicht versteh, was du mit explicit-Operator meinst
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: ständiges Typecasting bei Parametern

  Alt 8. Nov 2006, 20:15
Ein safe-Cast überprüft, ob die Typen kompatibel sind, ein hard cast nicht.
Markus Kinzler
  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 00:35 Uhr.
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