Einzelnen Beitrag anzeigen

USchuster

Registriert seit: 12. Sep 2010
Ort: L.E.
120 Beiträge
 
Delphi XE3 Professional
 
#15

AW: unverständlicher DCC-Fehler E2506

  Alt 9. Jan 2011, 18:19
Schön wäre es, wenn Embarcadero dieses reparieren würde.
Hilfreich dafür wäre ein QC Report mit folgendem Testcase und dem Hinweis Regression.

Delphi-Quellcode:
program GenericsMultipleDefaultPropertiesTest;

{$APPTYPE CONSOLE}

type
  TAssocArray<T> = record
  private
    function GetNamedValue(const AName: string): T;
    function GetValue(AIndex: Integer): T;
    procedure SetNamedValue(const AName: string; const AValue: T);
    procedure SetValue(AIndex: Integer; const AValue: T);
  public
    property Value[AIndex: Integer]: T read GetValue write SetValue; default;
    property Value[const AName: string]: T read GetNamedValue write SetNamedValue; default;
  end;

{ TAssocArray<T> }

function TAssocArray<T>.GetNamedValue(const AName: string): T;
begin
  Result := Default(T);
end;

function TAssocArray<T>.GetValue(AIndex: Integer): T;
begin
  Result := Default(T);
end;

procedure TAssocArray<T>.SetNamedValue(const AName: string;
  const AValue: T);
begin
//
end;

procedure TAssocArray<T>.SetValue(AIndex: Integer; const AValue: T);
begin
//
end;

type
  TStringAssocArray = TAssocArray<string>;

procedure Test;
var
  A: TStringAssocArray;
begin
  A['123'] := 'abc';
  if A[0] = A['123'] then;
end;

begin
  WriteLn('PASS'); // on compile
end.
(aber aus Erfahrung passiert sowas eher garnicht oder man muß sich die Bugfixes mit der nächsten Delphi-Version teuer erkaufen)
Eine Lösung wird es sehr wahrscheinlich nur für XE2 geben.
  Mit Zitat antworten Zitat