Funktionen zu specialized class hinzufügen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

Funktionen zu specialized class hinzufügen

Beitragvon Knittel » 18. Jan 2017, 05:22 Funktionen zu specialized class hinzufügen

Hallo allerseits,

ich benutze Generics (unit fgl) um mir eine spezialisierte Liste zu erstellen:

Code: Alles auswählen
type TPuzItem = class
   [...]
   property Value: integer read FValue;
   [...]
   end;
type TPuzItemList = specialize TFPGObjectList<TPuzItem>; 

Und würde jetzt gerne weitere Funktionen zu TPuzItemList hinzufügen (nicht zu TFPGObjectList). Jetzt ist die Frage, wie mache ich das?
In der Freepascal Wiki habe ich leider nichts entsprechendes gefunden.
Damit ihr euch vielleicht etwas mehr darunter vorstellen könnt, ich hatte mir vorgestellt zu TPuzItemList eine Funktion hinzuzufügen, die die Liste
nach Werten filtert.

Code: Alles auswählen
procedure TPuzItemList.FilterByValue(AMin, AMax: integer);
var i: integer;
begin
for i := Count-1 downto 0 do
  if (Items[i].Value < AMin) or (Items[i].Value > AMax) then
    Delete(i);
end;

So sähe aber ja nur der Implementierungsteil aus. Wie sieht das aber im Interface-Bereich der Unit aus?

Vielen Dank schonmal im Vorraus!
Knittel
 
Beiträge: 12
Registriert: 26. Mär 2016, 14:43

Beitragvon m.fuchs » 18. Jan 2017, 08:08 Re: Funktionen zu specialized class hinzufügen

Indem du von der spezialisierten Klasse ableitest:
Code: Alles auswählen
type
  TCustomSpecializedList = specialize TFPGObjectList<TObject>;
 
  TSpecializedList = class(TCustomSpecializedList)
    public
      procedure Test;
  end;

Oder in kurzer Version:
Code: Alles auswählen
type
  TSpecializedList = class(specialize TFPGObjectList<TObject>)
    public
      procedure Test;
  end;
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
Lazarusforum e. V.
 
Beiträge: 2064
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (Lazarus 2.0, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon Knittel » 18. Jan 2017, 14:01 Re: Funktionen zu specialized class hinzufügen

Vielen Dank! Funktioniert genauso wie ich mir das vorgestellt habe. :)

Hatte das bisher nicht ausprobiert, weil hier (http://wiki.freepascal.org/Generics_proposals#Sanity_checks) stand "Specialized types cannot be derived from". Oder ist damit was anderes gemeint, weil wenn nicht könnte man hier die Wiki mal anpassen?

EDIT: Mir ist grad aufgefallen, dass das nur proposals sind. Kommt davon wenn man den Text nur überfliegt^^. Hat sich damit erledigt. Danke nochmal.
Knittel
 
Beiträge: 12
Registriert: 26. Mär 2016, 14:43

• Themenende •

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste

cron
porpoises-institution
accuracy-worried