AGB  ·  Datenschutz  ·  Impressum  







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

TObjectList prüfen ob Index exitstiert

Ein Thema von Alexander Roth · begonnen am 13. Mai 2006 · letzter Beitrag vom 13. Mai 2006
Antwort Antwort
Seite 2 von 2     12   
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#11

Re: TObjectList prüfen ob Index exitstiert

  Alt 13. Mai 2006, 16:54
Hallo,

der große Vorteil der TObjectList liegt wohl in erster Linie darin, daß sie sich auch um die Freigabe der enthaltenen Objekte kümmern kann. Eventuelle Lücken lassen sich durch einen einfachen Aufruf der Methode Pack wieder schließen. Bei einem dynamischen Array muß ich als Programmierer darauf achten, alle Objekte freizugeben. Das Entfernen von NIL-Zeigern ist hier deutlich aufwendiger.
Ob Alexander für die Lösung seines Problems nun ein Array oder ein Listenobjekt nimmt, muß er selbst entscheiden. Offensichtlich ist die Unterstützung von NIL-Zeigern für ihn wichtig. Durch alcaeus' Post konnte aber der Eindruck entstehen, daß TObjectList keine Lücken zuläßt. Dies wollte ich durch meinen vorigen Beitrag richtigstellen.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#12

Re: TObjectList prüfen ob Index exitstiert

  Alt 13. Mai 2006, 17:54
TObjectList laesst keine Luecken zu, glaub mir. Machen wir mal so was:

Delphi-Quellcode:
var
  MyList: TObjectList;
  MyObject: TObject;
begin
  MyList := TObjectList.Create();
  MyList.Add(TObject.Create());
  MyList.Add(TObject.Create());
  MyList.Add(TObject.Create());
  MyList.Add(TObject.Create());
  MyList.Add(TObject.Create());
  
  // Nun setzen wir das Element mit dem Index 1 auf NIL
  MyList.Items[1] := nil;
  
  // Und jetzt sehen wir uns mal den Inhalt davon an:
  MyObject := MyList.Items[1];
  
  MyList.Free();
end;
Und, kommt beim Zugriff auf MyList.Items[1] eine AV? Nein: Das Element mit dem Index 1 existiert; es ist aber 0. Das heisst, dass dort keine Luecke ist, es steht nur eben Schwachsinn in der Liste. Du kannst Elemente, die nil sind, als Luecken betrachten, es sind aber nicht wirklich Luecken, schliesslich kannst du auch direkt aufs Element zugreifen. Wenn der Index nicht existieren wuerde, dann waers ne Luecke, aber so nicht

Das ist jetzt allerdings Wortklauberei

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: TObjectList prüfen ob Index exitstiert

  Alt 13. Mai 2006, 18:18
Hi, also erstmal riesen Dank für eure Hilfe

Besonders der Code ist sehr aufschlussreich. Habe noch ein bisschen rumexperimentiert und habe mich noch nicht entschieden, da array und TobjectList sehr sehr ähnlich sind.
Der wichtigste Punkt war mit ja dass man über einen festgelegten Index (mit Lücken) darauf zugreifen kann und dass glaube ich kriege ich nur hin indem ich es dann wahrscheinlich so wie oben beschrieben mache. (wenn mir nix besseres einfällt)


Danke für eure Hilfe

Tschüss (fahre jetzt auf Kursfahrt nach Italien Toskana )
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#14

Re: TObjectList prüfen ob Index exitstiert

  Alt 13. Mai 2006, 18:19
Zitat von alcaeus:
Du kannst Elemente, die nil sind, als Luecken betrachten
Genau das war meine Definition von "Lücke". Natürlich sind bei einer Liste mit 10 Elementen alle Plätze vorhanden. Einige können eben den Wert NIL enthalten.

Zitat von alcaeus:
Wenn du in der Mitte ein Element rausnimmst, dann geht der Rest einfach "nach vorne", d.h. du hast nie Luecken in der Liste.
Diesen Satz habe ich wegen meiner Definition von "Lücke" offensichtlich falsch verstanden. Ich dachte nämlich, du wärest von einem automatischen Packen der Liste (also dem Entfernen der NIL-Zeiger) in allen Fällen ausgegangen. Dies geschieht ja nur beim Aufruf der Methode Delete, nicht aber beim Setzen einzelner Listenelemente auf den Wert NIL.

Jetzt sollten aber alle Klarheiten beseitigt sein

Gruß Hawkeye
  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 12:54 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