Koponenten TRealList (TSingleList) und TIntegerList gesucht
Hallo,
Kennt jemand eine Komponente, die Single (Real) oder integer speichert und unter D2007 funktioniert? Grüße |
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
Hi,
eine Liste die entsprechende Werte speichert kenne ich nicht, aber die kann man sich doch selber bauen. Schreibe eine Klasse, die die entsprechenden Werte speichert. Alle entsprechenden Methoden wie Add, Insert, Indexof ... kann man sicher relativ schnell implementieren. Gruß oki |
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
LOL, diese (merkwürdige) Frage hat er auch im DGL-Forum gestellt.
Muss man zu jedem Klacks ne Komponente haben? Vieles kann man selber bauen! |
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
Moin,
ich hab immer noch nicht ganz verstanden, warum es unbedingt Listen sein müssen. Was kann man bei gespeicherten real-werten in einer Liste sinnvoller abwickeln als in einem Array of Real? Tuts das Array nicht auch? Gruß oki |
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
Zitat:
|
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
Zitat:
|
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
Zitat:
Zitat:
- Array of Real, - Array of Single, - Array of Integer! (kleine syntaktische Unsauberkeiten wie die Frage nach Komponenten übersehe ich wohlwollend) Gruß oki |
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
Wie es der Zufall will, habe ich bei Torry dies hier entdeckt.
|
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
Hallo,
zumindest vielen Danke für die Anregungen. Ich habe inzwischen die auch Idee aufgegriffen mir die Klassen selber zu bauen, als Ableitung von TList (zum kompletten selbst bauen - was sicher besser wäre - war ich zu faul). Da die längen von Integer und Single, wie auch Pointer 4 Byte lang sind, ist es einfach die TList zu misbrauchen. Arrays: Da ich anfangs nicht weiß, wie viele Element im Array sin brauche ich schon Dynamische Arrays. Diese haben für mich den Nachteil, daß sie schnell viel Speicher verbrauchen können(Hab ich mich früher auch manchmal drüber gewundert), wenn man sie manuell z.B. immer um 1 vergrößert (es wird ja immer wieder der komplette Speicher neu zugewiesen). Den anderen Speicher hält Delphis Memory Manager (er denk man könnte ihn ja nochmal brauchen) einfach vor und gibt ihn nicht wieder frei. Demzufolge muß man die größe manuell steuren, z.b. in 100er oder 1000er Schritten. Das sollte für mich die Klasse machen, wie z.B. in TList die AllocBy oder Capacity function. Deshalb die Komponente, um dies nicht immer zu überwachen. In der Liste steckt ja am Ende auch son Dynamisches Array, aber mit genau dem Speichermanagment, das ich brauch. Selbst Schreiben: Ok, kann man machen, aber da siegte erst mal die Faulheit. Wäre aber mal interessant, da man dann universell wäre: z.B auch für Boolean, Double, eigene Types ... Grüße User69 |
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
|
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
Falls man Delphi 2007 hat, ist eventuell auch die Lösung mit Generics sinnvoll. (Und elegant)
|
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
Aber nicht unter Win32
|
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
Zitat:
Grundsätzlich benutze ich aber auch lieber Listen. Gruß oki |
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
Was sagt die Hilfe denn?
Zum Memory Manager gibt es da keine solche Aussage denke ich, oder doch. Das Array an sich gibt den Speicher schon wieder frei, nur dem Memory Manager hält ihn, damit er für spätere Anforderungen schneller ist (oft hilft das zwar, aber bei sowas halt nich). Außerdem nimmt er sich immer bei Vergrößerung eines Arrays neuen Speicherplatz mit der kompletten neuen Größe. Ich bin, wie gesagt da auch Anfangs mit meiner Anwendung reingefallen, da ich ein Dynamisches Array (von einem eigenen Type, der schon ein paar Byte bracht) genutzt habe und es immer um eins größer oder kleiner gemacht habe. Das führte irgendwann mal zu der Windows Meldung, daß nicht genug Speicher da ist (er meint wohl Heap, da allgeien noch weit mehr als genug Speicher frei war). Alleine das Umschreiben des Codes (num vergößere ich das Array immer um 1000, egal ob ichs brauch oder nicht) brachte Erfolge und keine solchen Fehlermeldungen mehr. Nachteil: ich muß die wirkliche Größe in einer separaten Variable mitführen und immer checken, wann ich das Array vergrößern muß. Deshalb hier der Ansatz einer Koponenten die beide diese Fälle löst, also die TList. Ich habe übrigens lange im Netz gesucht, um dem Phänomen auf die Spur zu kommen. Bin aber dann doch im Netz fündig geworden, weiß aber nicht mehr wo. |
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
Was? :shock:
Der Delphi-Memory-Manager defragmentiert seinen Speicher nicht? Das wäre mir jetzt sehr neu. |
Re: Koponenten TRealList (TSingleList) und TIntegerList gesu
Zitat:
ich würde die TList aber wrappen und nicht ableiten... bei einer Ableitung kann man immer noch auf TList casten und falsche Pointer reingeben. Gewrappt kann man nur das benutzen, was da ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz