Forum: Object-Pascal / Delphi-Language
by hzzm,
16. Mai 2018
Verstehe.
Gemaess meinem Kommentar im Code // Rezept: TKRezept; // So geht es, generisch nicht!, kann ich das Model.Rezept als TKRezept deklarieren und mit TKRezept.Create; initialisieren, dann funktioniert natuerlich alles (solange der ProgrammAdapter als TProgrammAdapter<TKSchritt> erstellt wird).
Aber das widerspricht ja dem Zweck dieser generischen Struktur, ich will ja auch das Rezept in...
Forum: Object-Pascal / Delphi-Language
by hzzm,
15. Mai 2018
Der Semikolon-Fehler war nur im Beispiel, ich habe den Code leider schon laenger nicht mehr so drin.
Ich hab jetzt alles nochmal 10x hin- und hergedreht und denke einfach, ich muss einen Strukturfehler bei den generischen Definitionen machen.
Das kann doch nicht sein, dass das nicht geht. Ich nehme noch einen Anlauf und versuche, meine Struktur zwar simpel, aber so genau wie moeglich...
Forum: Object-Pascal / Delphi-Language
by hzzm,
15. Mai 2018
Das trifft ja ziemlich genau meine letzte allgemeine Problem-Beschreibung:
Ich benoetige ein Objekt, das entweder ein TApfel (/A1) oder eine TBanane (/A2) sein kann und will darauf unabhaengig vom Typ meine allgemeinen Algorithmen ausfuehren (A-manipulierend, A-Rausgebend Getter etc.) eben ohne explizit alles in TApfel- und TBanane-Prozeduren (separate private TBanane und TApfel im Adapter)...
Forum: Object-Pascal / Delphi-Language
by hzzm,
15. Mai 2018
Nachdem ich meine Struktur nun wieder ein ganzes Stueck von generics weggebracht habe, versuche ich mal mein Problem grundsaetzlich und vereinfacht zu beschreiben:
Ich habe 2 Objekt-Typen (nennen wir die Typen mal A1 und A2), die ein paar gleiche und ein paar unterschiedliche Variablen und Funktionen besitzt.
Daher erben sie die allgemeinen Eigenschaften vom Typ A.
Die Eigenschaften, die...
Forum: Object-Pascal / Delphi-Language
by hzzm,
15. Mai 2018
Wenn TObstKorb<TBanane>.Create funktionieren wuerde, koennte ich in einer generischen Funktion in Abhaengigkeit von T a la
constructor TProgrammModel<T>.Create;
begin
Data := TObstKorb<T>.Create;
end;
die Generik weiterreichen. Das waere doch praktisch, oder?
So wie es aussieht, muss ich aber in jeder generischen Ebene dann so einen Schei*dreck wie
constructor TProgrammModel<T>.Create;...
Forum: Object-Pascal / Delphi-Language
by hzzm,
15. Mai 2018
Warum meckert er denn hier schon wieder:
type
TObstKorb<T: TFrucht> = class
procedure Essen; virtual; abstract;
End;
TBananenKorb = class(TObstKorb<TBanane>)
procedure Essen; override;
End;
Forum: Object-Pascal / Delphi-Language
by hzzm,
14. Mai 2018
Ok, vielen Dank!
So langsam gehen mir die Delphi-Generics auf den Keks, alles muss man nachher trotzdem manuell aufbroeseln. Da kann ich auch direkt alles ausschreiben, wenns immer an exakt den Ecken haengenbleibt, an denen Generics den Code vereinfachen/verallgemeinern wuerden... vielleicht habe ich da auch nur generell eine falsche Erwartungshaltung bzgl. generics, aber ich dachte das aus...
Forum: Object-Pascal / Delphi-Language
by hzzm,
14. Mai 2018
Tut mir leid, dass ich Euch schon wieder belaestigen muss.
Ich haenge an etwas so simplem, aber die Loesung ist nicht greifbar:
Ich versuche ganz einfach ein generisches Alias fuer einen Frame zu deklarieren.
Nach einiger googlerei denke ich, dass ich einfach die "CreateNew" statt "Create" wie bei TForm fuer TFrame suche.
Aber mal ganz von vorne:
type
TSpeziellerFrame = class(TFrame)
...