Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Codehunter,
18. Okt 2018
Im Zusammenhang mit diesem Problem ist mir bei einem ähnlichen Konstrukt ein weiterer seltsamer Effekt aufgefallen, der sich nicht sofort erschließt:type
TGenObj<T1, T2> = class
public type
TGenObjRec = record
A: T1;
B: T2;
end;
TGenObjRecs = TArray<TGenObjRec>;
protected
procedure SetRecs(const AValue: TGenObjRecs);
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Codehunter,
5. Okt 2018
Danke dir. Mal schauen was passiert. Bis auf Weiteres dann erstmal mit Variablen.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Codehunter,
5. Okt 2018
Das kann es nicht sein, denn in der praktischen Implementierung prüfe ich explizit gegen eine String-Variable und nicht gegen eine Char-Konstante. Außerdem dürfte es dann genausowenig funktionieren, wenn A_ITEMS eine Variable statt einer Konstante ist. Aber dann geht es ja. Die Ursache scheint also zu sein, dass es sich um eine Array-Konstante handelt.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Codehunter,
5. Okt 2018
Jetzt bin ich in dem Zusammenhang auf ein weiteres Problem gestoßen:const
A_ITEMS: TArray<string> = ;
begin
case TmyArray.IndexOf(A_ITEMS, 'B') of // <-- E2532 Generisches Typargument konnte aus den unterschiedlichen Argumenttypen für Methode 'IndexOf' nicht abgeleitet werden
0: ;
1: ;
2: ;
end;
end;Die Deklaration von TmyArray hat sich nicht geändert (siehe oben)
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Codehunter,
4. Okt 2018
Ach, ich bin doch doof :roll: Hab ich doch glatt übersehen, dass das class functions sind. Typischer Fall von Wald und Bäumen ^^
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Codehunter,
4. Okt 2018
Hallo!
Dieser Lösung hier folgend habe ich eine identische Implementierung vorgenommen:type
TmyArray = class(System.Generics.Collections.TArray)
public
class function Contains<T>(const Values: array of T; const Item: T; const Comparer: IEqualityComparer<T>; out ItemIndex: Integer): Boolean; overload; static;
class function Contains<T>(const Values: array of T; const Item: T;...