Einzelnen Beitrag anzeigen

bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Generic class <T> , wie füge ich konkrete Daten ein ?

  Alt 10. Jan 2024, 00:27
wenn ich meine records in Klassen konvertiere und dann Constraints verwende kann ich kompilieren, ich hoffe ich habe Eure Inputs im sample code unten richtig umgesetzt.


mein Problem mit dieser Lösung:
ich möchte doch alle 3 Klassen TClusterDataX in meiner TKMeans class verarbeiten und erst wenn ich eine konkrete Klasse verwende mich für den Datentypen entscheiden müssen. Muss ich dann die TClusterDataX voneinander erben lassen?



Delphi-Quellcode:
  /// <summary>
  /// here it is just a simple pixel but can be more in future
  /// </summary>
  TClusterData3 = class
    DrawingColor: TColor;
    x, y: Integer;
    chrlabel : char;
    // ...
    // ..
    // .
  end;

  /// <summary>
  /// a bit different pixeldefinition
  /// </summary>
  TClusterData2 = class
    BWColor: Byte;
    x, y: Integer;
    // tbd.
    // ...
    // ..
    // .
  end;

  TClusterData = class
    DrawingColor: TColor;
    x, y: Integer;
  end;


type
  [B]TKMeans<T: TClusterData> = class[/B]
  private

  private
    FClusteredData: TClusterList<T>;

    FRawData: TRawData<T>;

    FNumClusters: Integer;

    FDistanceMetric: TDistanceMetricfunction<T>;

    FCentroidfct: TCentroidfunction<T>;

    FMaxIterations: Integer;

  public
    constructor Create(NumClusters: Integer;
      DistanceMetric: TDistanceMetricfunction<T>;
      Centroidfct: TCentroidfunction<T>; MaxIterations: Integer = 10);

    procedure LoadData(SoureBitMap: TBitmap); overload;

    function FindNewClusterCentroids: Boolean;

    procedure GroupData2NearestCluster;

    procedure SaveData(OutBitMap: TBitmap);
  end;

Geändert von bernhard_LA (10. Jan 2024 um 00:37 Uhr)
  Mit Zitat antworten Zitat