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;