Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

AW: Exception beim SetLength für ein Array

  Alt 31. Aug 2020, 15:20
Kann Lazarus Generics? ...dann Items : TObjectList<TConnection>;
Ja, dort wurde schon vor 'ner Weile auch sowas gebaut.
Aber da es ja eine Eigentwicklung ist ... da ist das dann in FreePascal dann auch öfters auch bissl anders gelöst, bzw. man muß im passenden Modus kompilieren.
https://wiki.freepascal.org/Generics

Normale TList/TObjectList gegenüber generischer TList<T>/TObjectList<T>,
dort ist einfach, dass da der Typcast bereits eingebaut ist und das auch alles durch die Typprüfung des Compilers behandelt wird. (weniger potentielle Fehler)

Delphi-Quellcode:
TConnectionListe = class
  Items : Array of TConnection;
  ...
end;
  
TConnectionListe = class
  Items : TObjectList<TConnection>; // enthält eine Liste
  ...
end;
// ConnectionListe.Items.Add
  
TConnectionListe = class(TObjectList<TConnection>) // ist selbst die Liste
  ...
end;
// ConnectionListe.Add
Und natürlich im Destructor nicht vergessen die Items (die vielen TConnection) nicht vergessen freizugeben.
Die ObjectListe hat da den Vorteil das über OwnsObjects automatisch machen zu können.

Außerdem in TConnection.Destroy nicht vergessen das Image freizugeben.
$2B or not $2B

Geändert von himitsu (31. Aug 2020 um 15:26 Uhr)
  Mit Zitat antworten Zitat