Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Object Liste mit TList; braucht man unbedingt GetMem? [done]
cbs - Fr 19.09.03 16:12
Titel: Object Liste mit TList; braucht man unbedingt GetMem? [done]
huhu
also ich arbeite grade für meine verhältnisse an einem recht komplexen projekt :lol:
ich hab ein object deklariert, nenen wir es mal objectA. dieses object hat wie gehabt eigenschaften und methoden
ein weiteres object (objectB) hat andere eigenschaften und methoden, soll aber eine vielzahl von objecten des typs objectA haben.
zuerst hab ich das mit einem dynamischen array gelöst bis mir das nach einer weile zu "unelegant" erschien, vorallem dann wenn ein objectA in der liste verschoben oder ein neues mittendrin erzeugt werden sollte.
ich hab mir daraufhin das tut von motzi über pointer angeschaut und habs sogar verstanden :wink: (dank an motzi :lol: )
nun meine Frage: in diesem tut werden formulare erzeugt und deren pointer in einer TList gespeichert. soweit so gut. was mir noch nicht so recht klar ist wieso vorher speicher mit GetMem reserviert wird. ich hab natürlich hier im DF gesucht und hab einige Bsp gefunden wo objecte erzeugt werden ohne getmem zu benutzen.
also: reicht es aus mein object (ist kein formular und auch kein visuelles object) einfach zu erzeugen oder muss ich immer vorher entsprechend speicher reservieren?
wie das mit TList usw funktioniert hab ich verstanden. meine frage ist wirklich nur ob ich GetMem unbedingt brauche oder nicht da ich hier im forum diesbezüglich nix eindeutiges gefunden habe.
mfg cbs
Motzi - Fr 19.09.03 16:27
Hi,
freut mich das dir das Tut ein bisschen geholfen hat! 8) ;)
Aber anscheinend sind ein paar Sachen doch nicht so klar herausgearbeitet... :roll:
Nein, du benötigst kein GetMem und zwar aus einem einfachen Grund - wenn du dich noch ans Tutorial erinnern kannst, da steht drinnen, dass unter Delphi alle Objekte Pointer sind die implizit dereferenziert werden. Wenn das Objekt jetzt also bereits selbst ein Zeiger ist kann ich einfach diesen Zeiger für die Liste nehmen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var aObject: TObject; aList: TList; i: Integer;
aList := TList.Create; try for i := 1 to 10 do begin aObject := TObject.Create; aList.Add(aObject); end; finally aList.Free; end; |
Ich verwende GetMem in meinem Tutorial nur um dessen praktischen Einsatz auch noch einmal zu präsentieren (ich weiß - es ist nicht gerade gut gewählt), aber wenn ich mich recht erinnere hab ich am Schluß auch einen Hinweis darauf gegeben, dass man die Objekte (die ja auch nur Pointer sind) auch direkt benutzen kann...
cbs - Fr 19.09.03 16:56
ooook :lol:
danke dir :!:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!