AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Adressen von ListItems ändern sich

Ein Thema von Wormid · begonnen am 4. Dez 2014 · letzter Beitrag vom 5. Dez 2014
Antwort Antwort
Dejan Vu
(Gast)

n/a Beiträge
 
#1

AW: Adressen von ListItems ändern sich

  Alt 5. Dez 2014, 09:27
Also ich bin mir ziemlich sicher, das hier ein overrun-Problem besteht, d.h. es wird irgendwann irgendwo etwas überschrieben. Das íst vielleicht beim alten Delphi nicht aufgefallen, weil der Memory-Manager anders funktioniert hat, aber jetzt vielleicht.

Verwende vielleicht auch mal FastMM im FullDebugMode, schalte RangeCheck an, Overflowchecks auch usw. Du kannst ach Sentinel-Variablen einführen, oder die Referenz an anderer Stelle nochmals sichern und dann prüfen, ob die Referenzen noch identisch sind (Aber auch nur, wenn die vorherigen Maßnahmen nichts bringen)

Die ListViewItems werden vom Delphi-Control verwaltet. Über 'Items.Add' wird einfach nur ein neues TListItem instantiiert´. Das von Uwe beschriebene 'OwnerDraw'-"Problem" ist nur in "GetItem(Item : TLVItem)" vorhanden, und ob da ein Problem draus wird, würde ich bezweifeln. Denn dieses 'GetItem' hat mit dem Getter von 'Items[Index]' nichts zu tun, denn 'Items' ist eine Liste mit eigenem Getter und liefert einfach das Element an der Stelle zurück (soweit ich mich erinnere). Da auch die Liste an sich nicht verändert wird, sollte es daran eigentlich nicht liegen.
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Adressen von ListItems ändern sich

  Alt 5. Dez 2014, 09:46
Das mit dem FastMM werden wir mal angehen - Danke für den Tip!
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#3

AW: Adressen von ListItems ändern sich

  Alt 5. Dez 2014, 15:02
Das von Uwe beschriebene 'OwnerDraw'-"Problem" ist nur in "GetItem(Item : TLVItem)" vorhanden, und ob da ein Problem draus wird, würde ich bezweifeln. Denn dieses 'GetItem' hat mit dem Getter von 'Items[Index]' nichts zu tun, denn 'Items' ist eine Liste mit eigenem Getter und liefert einfach das Element an der Stelle zurück (soweit ich mich erinnere).
Stimmt zumindest in neueren Delphis nicht mehr: TListItems.GetItem ruft entweder Owner.GetItem (entspricht TCustomListView.GetItem) auf oder holt sich über ListView_GetItem(Handle, Item) den Pointer auf die Instanz aus Item.lParam. Insofern ist schon das Windows-Control irgendwie in die Speicherung der ListItems involviert.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Adressen von ListItems ändern sich

  Alt 5. Dez 2014, 15:31
Da muss ich nochmals schauen.... Ich hatte das heute Morgen überflogen, aber der Code dürfte sich nicht geändert haben. Im Zweifelsfall hast Du Recht, weil Du das bestimmt genauer geprüft hast.
  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 07:38 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