AGB  ·  Datenschutz  ·  Impressum  







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

[gelöst] (ObjectList) Sort -> AccessViolation

Ein Thema von silver-moon-2000 · begonnen am 6. Aug 2011 · letzter Beitrag vom 7. Aug 2011
Antwort Antwort
silver-moon-2000

Registriert seit: 18. Feb 2007
Ort: Schweinfurt
170 Beiträge
 
Delphi XE Professional
 
#1

AW: (ObjectList) Sort -> AccessViolation

  Alt 7. Aug 2011, 08:51
Hallo und Danke an alle für die Antworten. Ich werde mal versuchen, zu antworten.

Zitat von MGC:
ist sichergestellt das input1 und input2 nicht auf Zeichenketten weisen die nil sind
Ich denke schon, da ich einfach das Codebeispiel zu TList.Sort aus der Onlinehilfe abgekupfert habe. Außerdem funktioniert ja eines meiner Beispiele und bei dem funktionierenden wird ja auch auf (TMMItem(input1).isAudioOnly gecastet/getestet. Dort würde es ja auch knallen, wenn input1 = nil wäre.

Zitat von jaenicke:
Die beiden Varianten machen schlicht nicht das gleiche (insbesondere im Falle von isAudioOnly = False bei beiden Objekten).
if not (b1 xor b2) then
Autsch. Das hatte ich doch tatsächlich nicht bemerkt. Peinlich, peinlich. In meiner Variante rennt er sich tatsächlich zu Tode. Jetzt, wo Du es schreibst...
Dass sie ein etwas anderes Verhalten aufweisen, ist tatsächlich so geplant gewesen, trotzdem danke, dass Du mich darauf hinweist.

Zitat von himitsu:
Ich würde auchg mal die generische TObjektList in den Raum werfen.
Normalerweise habe ich mir bisher immer meine ObjectLists passend abgeleitet type TMMItemObjectList = class(TObjectList) , sodass ich mir das Casten sparen konnte.
Das habe ich mir diesmal, warum auch immer, gespart. Das ist aber auch das erste Mal, dass ich wirklich mit etwas neuerem als TurboDelphi programmiere. Ich habe bisher überhaupt nicht an Generics gedacht, aber das ist mal eine gute Idee.

Zitat von rollstuhlfahrer:
Ich würde noch (auch wenn es noch so abstrus erscheint) folgende Abfrage einbauen:
Das habe ich an dieser Stelle nicht, weil ich es jeder Stelle, an der die OL befüllt wird, getestet habe. Es darf also kein anderer Typ in der Liste auftauchen. Generische Listen aber machen, wie erwähnt, das Ganze noch ein Stückweit sicherer. Ich denke, ich werde darauf umsteigen.

Trotzdem: Wenn ich mir die Hilfe zu TList.Sort ansehe, muss die Callback-Routine vom Type TListSortCompare sein, und der ist definiert als TListSortCompare = function (Item1, Item2: Pointer): Integer; . Somit würde mit eine typisierte OL auch nicht helfen, da die Callback Routine sich ja nicht ändert (solange ich Sort nicht überschreibe)

Zusammenfassung: Ich habe tatsächlich wieder etwas Wichtiges übersehen. jaenickes Code-Änderung behebt mein Problem, und auch generische Listen umzusteigen ist auch eine gute Idee.
Nochmals danke an Alle
Tobias
Bitte nicht hauen , ich weiß es nicht besser

Geändert von silver-moon-2000 ( 7. Aug 2011 um 08:55 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 13: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