Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Generisches Objekt - Zwei T-Variablen vergleichen (https://www.delphipraxis.net/184000-generisches-objekt-zwei-t-variablen-vergleichen.html)

Neutral General 18. Feb 2015 16:50

Delphi-Version: XE7

Generisches Objekt - Zwei T-Variablen vergleichen
 
Hallo,

Ist sowas möglich:
Delphi-Quellcode:
type
  TKlasse<T> = class(TObject)
    a: T;
    b: T;
    function Funktion: Integer;
  end;

function TKlasse<T>.Funktion: Integer;
begin
  if a = b then // Operator ist auf diesen Operandentyp nicht anwendbar
    Result := 1
  else
    Result := 3;
end;
Ich kann schon gewissermaßen verstehen warum es nicht geht, aber gibt es eine Möglichkeit sowas hinzukriegen? (Ggf. auf Umwegen)

Uwe Raabe 18. Feb 2015 17:00

AW: Generisches Objekt - Zwei T-Variablen vergleichen
 
Delphi-Quellcode:
uses
  System.Generics.Defaults;


function TKlasse<T>.Funktion: Integer;
begin
//  if a = b then // Operator ist auf diesen Operandentyp nicht anwendbar
  if TEqualityComparer<T>.Default.Equals(a, b) then
    Result := 1
  else
    Result := 3;
end;

Mikkey 18. Feb 2015 17:40

AW: Generisches Objekt - Zwei T-Variablen vergleichen
 
Oder so:

Delphi-Quellcode:
type
  TKlasse<T: IComparable> = class(TObject)
    a: T;
    b: T;
    function Funktion: Integer;
  end;

function TKlasse<T>.Funktion: Integer;
begin
  if (0 = a.CompareTo(b)) then
    Result := 1
  else
    Result := 3;
end;

Stevie 18. Feb 2015 18:39

AW: Generisches Objekt - Zwei T-Variablen vergleichen
 
Zitat:

Zitat von Mikkey (Beitrag 1290447)
Oder so:

Das schränkt den Gebrauch aber auf objekte oder Interfaces ein, ka, ob das der TE möchte.

Neutral General 19. Feb 2015 08:37

AW: Generisches Objekt - Zwei T-Variablen vergleichen
 
Uwe Raabe: Danke so klappts! :)

Uwe Raabe 19. Feb 2015 10:58

AW: Generisches Objekt - Zwei T-Variablen vergleichen
 
Zitat:

Zitat von Neutral General (Beitrag 1290546)
Uwe Raabe: Danke so klappts! :)

Je nach tatsächlichem Typ und was du für den als "gleich" definierst, musst du vielleicht auch einen eigenen Comparer schreiben. Dann kannst du ja noch mal hier nachfragen :)

Neutral General 19. Feb 2015 11:18

AW: Generisches Objekt - Zwei T-Variablen vergleichen
 
Das ist klar, aber für meine Zwecke sollte das ausreichen, danke ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 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