AGB  ·  Datenschutz  ·  Impressum  







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

Fehler beim TListView-OnCompare

Ein Thema von Schneewittchen · begonnen am 23. Nov 2004 · letzter Beitrag vom 20. Mär 2006
Antwort Antwort
Schneewittchen

Registriert seit: 23. Nov 2004
2 Beiträge
 
Delphi 7 Enterprise
 
#1

Fehler beim TListView-OnCompare

  Alt 23. Nov 2004, 10:21
Hi,

ich habe eine TListView mit den Methoden OnCompare und OnColumnClick um die Liste zu sortieren. Das funktioniert ja auch, aber wenn ich die bestehende Liste sortiere und dann irgendwann einen neuen Eintrag hinzufüge, erhalte ich folgenden Fehler:

Im Projekt ist eine Exception der Klasse EStringListError aufgetreten. Meldung: 'Listenindex überschreitet das Maximum (1)'. Prozess wurde angehalten.Mit einzelne Anweisung oder Start fortsetzen

Er versucht nach dem Hinzufügen gleich die Liste neu zu sortieren, aber dann tritt der Fehler auf.
Ich weiß echt nicht mehr was ich ändern soll, hoffe es kann mir jemand helfen!
Danke

Delphi-Quellcode:
procedure Tframe_geburtstag.GeburtstageColumnClick(Sender: TObject;
  Column: TListColumn);
begin
  ColumnToSort := Column.Index;
  (Sender as TCustomListView).AlphaSort;
end;
Delphi-Quellcode:
procedure Tframe_geburtstag.GeburtstageCompare(Sender: TObject; Item1,
  Item2: TListItem; Data: Integer; var Compare: Integer);
var
  ix: Integer;
begin
  if ColumnToSort = 0 then
    Compare := CompareText(Item1.Caption,Item2.Caption)
  else begin
   ix := ColumnToSort - 1;
   Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
  end;
Auf Button Klick in der ListView einen Eintrag hinzufügen:
Delphi-Quellcode:
    Item := Geburtstage.Items.Add;
    Item.Caption := '' + '11.11.2001'; //Datum
    Item.SubItems.Add('typ'); //Typ
    Item.SubItems.Add(Edt_Nachname.Text);
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Fehler beim TListView-OnCompare

  Alt 23. Nov 2004, 10:38
Ich würde mal so tippen, dass es kein SubItem mit dem Index ix gibt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

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

Re: Fehler beim TListView-OnCompare

  Alt 23. Nov 2004, 10:39
Hi Schneewittchen,

ich gehe mal davon aus dass du nach dem Hinzufügen die ColumnClick-Routine aufrufst. Ich hab jetzt kein Delphi und kann daher nicht ausprobieren, was passiert wenn man eine Liste mit einem Item sortieren will. Führ den ColumnClick nicht immer aus, sondern nur wenn die Anzahl Elemente größer als 1 ist:
Delphi-Quellcode:
if Geburtstage.Items.Count > 1 then
  GeburtstageColumnClick(Geburtstage, Geburtstage.Columns[0]);
Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Schneewittchen

Registriert seit: 23. Nov 2004
2 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Fehler beim TListView-OnCompare

  Alt 23. Nov 2004, 11:14
Die Routine wird ja standardmäßig von Delphi ausgeführt, ich ruf die nicht explizit auf.
Es sind immmer mehrere Elemente vorhanden, das ist nicht das Problem.
Der Fehler tritt mitten in der Liste auf unter dem Sortieren, wenn er Werte vergleicht...

  Mit Zitat antworten Zitat
APriesing

Registriert seit: 20. Mär 2006
Ort: Bremen
1 Beiträge
 
#5

Re: Fehler beim TListView-OnCompare

  Alt 20. Mär 2006, 14:46
Hi,

vielleicht hilft das ja noch:

Habe beim portieren von Delphi3-Code nach Delphi5 gemerkt, daß bei TListView_Items im OnCompare-Event die Elemente "Item1.SubItems[i]" bzw. "Item2.SubItems[i]" ab Index 11 (!!) gezählt werden. Kleinere Werte führen unweigerlich zu einer Exception.

Delphi 5 zählt offensichtlich von Null an, und was Delphi 7 macht, keine Ahnung.

Gruß
Achim
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Fehler beim TListView-OnCompare

  Alt 20. Mär 2006, 15:43
Zitat von APriesing:
Delphi 5 zählt offensichtlich von Null an, und was Delphi 7 macht, keine Ahnung.
Alle Delphi Versionen beginnen mit der Zählung bei 0 (Ausgenommen bei Type String das fängt die Zählung bei 1 an)
I come from outer space to save the human race
  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 15:00 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