AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi SortedList oder iDictionary in Delphi (ohne .net!)

SortedList oder iDictionary in Delphi (ohne .net!)

Ein Thema von Berlinermauer · begonnen am 22. Sep 2010 · letzter Beitrag vom 26. Sep 2010
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#1

AW: SortedList oder iDictionary in Delphi (ohne .net!)

  Alt 23. Sep 2010, 07:47
Wie hast du die Objekte der ComboBoxen zugewiesen?
Eventuell stimmt da ja was nicht, ansonsten sollte ComboBox1.Items.Objects[ComboBox1.ItemIndex] schon korrekt sein.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (23. Sep 2010 um 08:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SortedList oder iDictionary in Delphi (ohne .net!)

  Alt 23. Sep 2010, 07:50
Hallo Berlinermauer,

das sieht so aus, dass Du allen Objecten das letzte Object zugewiesen hast.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#3

AW: SortedList oder iDictionary in Delphi (ohne .net!)

  Alt 23. Sep 2010, 08:04
das sieht so aus, dass Du allen Objecten das letzte Object zugewiesen hast.
Was auch gern "falsch" gemacht wird:
Allen Items das selbe Objekt und nur den Objektinhalt ausgetauscht/überschrieben.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#4

AW: SortedList oder iDictionary in Delphi (ohne .net!)

  Alt 23. Sep 2010, 09:47
Ist vielleicht nicht angebracht, aber wenn jemand von der (C#?) .NET Welt kommt...

Objekte werden in Delphi ja nicht automatisch in einer GarbageCollection entsorgt. Wenn da etwas bei der Objektzuweisung schief läuft und Referenzen verloren gehen sowieso.

Evtl. ReportMemoryLeaksOnShutdown := true oder FastMM4 verwenden (wenn Delphi 7 noch stimmt)?
  Mit Zitat antworten Zitat
Berlinermauer

Registriert seit: 3. Okt 2007
Ort: 0x0000
213 Beiträge
 
Delphi 7 Personal
 
#5

AW: SortedList oder iDictionary in Delphi (ohne .net!)

  Alt 26. Sep 2010, 00:04
Hm, wie kann ich gucken ob alle Objecte die gleichen sind? beim Debuggen will das iwie nicht so recht, weil .Objects[] kein array oder soetwas in dem Sinne ist.

und nein ich komme nicht von C# nur hab ich da halt einen Beispiel Code gefunden, und dachte: Sowas müsste es doch auch in Delphi geben!


Achja:

Zitat:
Was auch gern "falsch" gemacht wird:
Allen Items das selbe Objekt und nur den Objektinhalt ausgetauscht/überschrieben.
Ja könnte sein, aber was ist daran falsch?
Wie müsste es richtig lauten?

Grüße
Marc S.
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: SortedList oder iDictionary in Delphi (ohne .net!)

  Alt 26. Sep 2010, 08:49
Hallo Berlinermauer,

Zitat von Berlinermauer:
Ja könnte sein, aber was ist daran falsch?
Wenn alle Einträge gleich sein sollen ist daran erst mal nichts falsch.

Zitat von Berlinermauer:
Wie müsste es richtig lauten?
1. Neues Object erzeugen
2. Daten dem neuen Object zuweisen
3. Object mit AddObject anhängen.

Wichtig ist zum Schluss, dass du die Object einzeln wieder frei gibst, wenn sie nicht mehr gebraucht werden.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#7

AW: SortedList oder iDictionary in Delphi (ohne .net!)

  Alt 26. Sep 2010, 09:31
Objekte kann man sich wie Integer mit Zusatzfunktionen vorstellen. Ändert man jetzt eine der Zusatzfunktionen, so ändert sich die Zahl, die der Integer repräsentiert nicht. Aber auf die Zahl kommt es an. Diese Zahl ist nämlich ein Pointer auf den Speicherbereich des Objektes. Wenn du also in einer Liste alle Einträge das selbe Objekt (also die gleiche Objektinstanz) zuweist, verweisen alle Listeneinträge auf die selbe Speicherstelle. Änderst du diese Speicherstelle, gilt das neue sofort für alle Listeneinträge (Speicherstelle = Kiste; Änderung in der Kiste => Griff in die Kiste bringt nur das neue zu Tage).

Bernhard

PS: Bei Records bin ich mir nicht ganz sicher, wie das da abläuft, aber bei Objekten brauchst du in jedem Fall für jeden Eintrag ein neues.
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:36 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-2025 by Thomas Breitkreuz