AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit TList

Ein Thema von stevewilson · begonnen am 21. Okt 2006 · letzter Beitrag vom 21. Okt 2006
Antwort Antwort
Seite 2 von 2     12   
stevewilson

Registriert seit: 21. Okt 2006
16 Beiträge
 
Delphi 7 Professional
 
#11

Re: Probleme mit TList

  Alt 21. Okt 2006, 16:36
Dabei muss ich das mit TList oder TObjectList realisieren. Welches von beiden ich verwende, ist mir freigestellt,
allerdings ist Vorgegeben, auf jeden Fall eines von beiden zu benutzen.
Gruß
stevewilson
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#12

Re: Probleme mit TList

  Alt 21. Okt 2006, 16:38
Zitat von stevewilson:
Ja, das dachte ich mir schon. Aber wie kriege ich das dann hin, ohne einen Array für "cd" zu verwenden?
es muss doch irgendwie möglich sein, ohne pointer bzw. dynamische arrays zu verwenden, ich wollte streng objektorientiert programmieren...
1. Einfach das cd.free entfernen und es sollte laufen. Die Instanz brauchst du doch so lange sie in der Liste ist. Daher: freigeben, wenn du sie aus der Liste entfernst. Und dafür schau dir mal Punkt 2 an
2. Es wurde schon in diesem Thread darauf hingewiesen, dass du die Klasse TObjectList anstatt TList verwenden solltest, da diese Klasse dir alles für Instanzen in einer Liste zur Verfügung stellt und auch die Möglichkeit diese Instanzen beim entfernen aus der Liste mit frei zu geben.
3. Jede Instanz ist im Inneren ein Pointer, Delphi versteckt dies aber nach aussen. Daher arbeitest du so oder so mit Pointern. Deshalb zeigt deine Variable cd und der Eintrag in der Liste (beides sind Zeiger) auf die gleiche Stelle im RAM (bei dem Code zuvor). Dadurch haben auch beide Listeneinträge die gleichen Daten gehabt (beide zeigten auf ein und die selbe Instanz).
  Mit Zitat antworten Zitat
stevewilson

Registriert seit: 21. Okt 2006
16 Beiträge
 
Delphi 7 Professional
 
#13

Re: Probleme mit TList

  Alt 21. Okt 2006, 16:44
Ach ja, richtig.

Wenn ich einem Objekt einer Klasse neue Werte zuweise, dann wird das Objekt an eine Andere adresse kopiert, quasi dupliziert?

Und wegen "cd.free"-aufrufes hatte ich auch bei der TObjectList einen Fehler oder? Da cdList.free schon alle Instanzen löscht, wie du sagst.

Vielen Dank für die Hilfe!
Gruß
stevewilson
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#14

Re: Probleme mit TList

  Alt 21. Okt 2006, 17:01
Zitat von stevewilson:
Wenn ich einem Objekt einer Klasse neue Werte zuweise, dann wird das Objekt an eine Andere adresse kopiert, quasi dupliziert?
Nein, sowas findest du in C++ und C# mit automatischen Instanzen, nicht bei uns. Das Objekt wird nicht kopiert oder weg bewegt.

Zitat von stevewilson:
Und wegen "cd.free"-aufrufes hatte ich auch bei der TObjectList einen Fehler oder? Da cdList.free schon alle Instanzen löscht, wie du sagst.
Naja, nicht ganz. cdList.Free will alle seine Elemente freigeben, aber er hat nur tote, schon freigegebene, Instanzen in seiner Liste und stürzt beim Versuch das ganze nochmals freizugeben ab.
  Mit Zitat antworten Zitat
stevewilson

Registriert seit: 21. Okt 2006
16 Beiträge
 
Delphi 7 Professional
 
#15

Re: Probleme mit TList

  Alt 21. Okt 2006, 17:08
und bei java findet man sowas auch, zumindest bei den String-Objekten

Naja, jetzt hab ich jedenfalls alles verstanden

Danke.
Gruß
stevewilson
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#16

Re: Probleme mit TList

  Alt 21. Okt 2006, 17:58
Zitat von stevewilson:
und bei java findet man sowas auch, zumindest bei den String-Objekten
In gewisser Weise findest du das auch bei Delphi. Bei der Zuweisung einer String-Variablen an eine andere wird zwar nur ein Zeiger kopiert, wird aber eine Referenz verändert, bleibt die andere unberührt; der String wurde also vor der Manipulation kopiert.


Zitat von Muetze1:
Nein, sowas findest du in C++ und C# [...]
Nana. In C++ mag sowas funktionieren, aber die andere Sprache stammt immerhin von Herrn Hejlsberg .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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