AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi (D2009) Generics mit Array als Feldvariable: Interner Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

(D2009) Generics mit Array als Feldvariable: Interner Fehler

Offene Frage von "stimpinski"
Ein Thema von stimpinski · begonnen am 7. Apr 2010 · letzter Beitrag vom 15. Apr 2010
 
stimpinski

Registriert seit: 5. Mai 2009
3 Beiträge
 
#1

(D2009) Generics mit Array als Feldvariable: Interner Fehler

  Alt 7. Apr 2010, 15:10
Moin!

Bei der Verwendung von Generics unter Delphi 2009 bin ich kürzlich über folgende Fehlermeldung gestolpert:
Zitat:
[DCC Fataler Fehler] F2084 Interner Fehler: L2084
Daraufhin habe ich das Problem isoliert und mit möglichst minimalem Quellcode reproduziert. Das Projekt beinhaltet zwei Units:

Delphi-Quellcode:
unit testGenerics;

interface

uses
  Controls;

type

  TMyGenericClass<T> = class
  private
    FIntegerArray: Array of Integer; // Array als Feldvariable einer generischen Klasse
  public
    constructor Create;
  end;

implementation

{ TMyGenericClass<T> }

constructor TMyGenericClass<T>.Create;
begin
  // do nothing
end;

end.
Delphi-Quellcode:
unit main;

interface

uses
  testGenerics,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type

  TMyDummieClass = class
    constructor Create;
  end;

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    FMyGenericClass: TMyGenericClass<TMyDummieClass>;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TMyDummieClass }

constructor TMyDummieClass.Create;
begin
  // do nothing
end;

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  FMyGenericClass := TMyGenericClass<TMyDummieClass>.Create; // verursacht die Fehlermeldung
end;

end.
Kann es sein dass Delphi ein Problem mit generischen Klassen hat, die Arrays als Feldvariablen haben? Wenn ich die Feldvariable entferne compiliert und läuft es fehlerfrei, ebenso wenn ich die generische Klasse zu einer nicht generischen mache. Hat jemand bereits Erfahrungen mit diesem Problem gesammelt? Compiliert das ganze unter Delphi 2010? Ein funktionierender Workaround ist folgende Variante:

Delphi-Quellcode:
type

  TIntegerArray = Array of Integer;

  TMyGenericClass<T> = class
  private
    FIntegerArray: TIntegerArray;
  public
    constructor Create;
  end;
In besonderen Fällen kann man auch einen Wrapper um den Array basteln, andererseits wäre das ziemlich umständlich.
  Mit Zitat antworten Zitat
 


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 13:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz