![]() |
AW: Exception beim SetLength für ein Array
Im RecordCount wird der DataSet.Filter beachtet, also passt die Anzahl.
Wenn die TConnectionListe vorher nicht erstellt wurde, dann existiert beim Aufruf von Methoden/Eigenschaften das zugehörige Objekt nicht, also existiert auch das darin enthaltene Items nicht. Da Items das Einzige ist, was in dem Objekt existiert, knallt es natürlich nur/erst beim Zugriff auf diese Eigenschaft. Als Self würden nil oder ein ungültiger Zeiger erstmal problemlos an die Methode übergeben. Das mit dem Objektlist ist einfach: Du hast dir eine Klasse gebaut, die eine Liste (Array) enthält. Man kann diese Liste/Array selbst behandeln, oder man erbt von einer Listen-Klasse und kann dann deren Methoden verwenden, angefangen beim TObjectList.Add, wo intern der Speicher bereits mit einer Optimierung mehr reserviert, bzw. man kann auch manuell
Delphi-Quellcode:
den Wert vorgeben, entsprechend deinem SetLength.
List.Capacity:=DS.RecordCount
|
AW: Exception beim SetLength für ein Array
Zitat:
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. ![]() 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:
Und natürlich im Destructor nicht vergessen die Items (die vielen TConnection) nicht vergessen freizugeben.
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 Die ObjectListe hat da den Vorteil das über OwnsObjects automatisch machen zu können. Außerdem in TConnection.Destroy nicht vergessen das Image freizugeben. |
AW: Exception beim SetLength für ein Array
Wow perfekt danke für die vielen Informationen versuche das jetzt erstmal mir aus den ganzen Informationen eine Lösung zu erarbeiten.
Melde mich sobald ich Fortschritte erzielt habe...:thumb: Danke nochmals:-D |
AW: Exception beim SetLength für ein Array
Muss ich das Thema irgendwie schließen oder reicht das wenn ich das mit der offenen Frage rausnehme?:oops::lol:
|
AW: Exception beim SetLength für ein Array
Die Lösung posten, damit man bei der Suche auch Jahre später nicht nur die Frage, sondern auch die Antwort findet...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 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 by Thomas Breitkreuz