AGB  ·  Datenschutz  ·  Impressum  







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

Listenindex überschreitet das Maximum

Ein Thema von arne99 · begonnen am 15. Dez 2006 · letzter Beitrag vom 16. Dez 2006
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von arne99
arne99

Registriert seit: 11. Jan 2005
Ort: Hamburg
158 Beiträge
 
Turbo Delphi für Win32
 
#1

Listenindex überschreitet das Maximum

  Alt 15. Dez 2006, 10:49
Hallo folgender Tatbestand:

Ich habe eine Form, eine Listview1 und 2 ValueListEditoren.
Nun vesuche ich das selektierte Listview1.Selected ITEM auszulesen und in den ValueListEdit1 und 2 reinzupacken!

Fehler:
Wenn ich jedoch einen Lsitview1 Eintrag habe, wo nicht alle Substrings ausgefüllt sind erhalte ich die Message: Listenindex überschreitet das Maximum (4).

Frage:
// Für dieses Beispiel/Problem gibt es leider noch keine genaue Hilfe bei DP, daher meine Frage:

Wie kann ich den SelectedCode umschreiben, dass er mir die Felder die im Listview1 LEER sind einfach im ValueListEditor auch LEER macht. (aber hinzufügt!) ???

Hier mein Code:

Delphi-Quellcode:
procedure TForm1.ListView1Click(Sender: TObject);
begin

 if (listview1.Items.Count <> 0) and (listview1.Selected <> nil) then

  begin

            vle1.Strings.Clear;
            vle1.Strings.BeginUpdate;
            
            vle1.TopRow:=vle1.InsertRow('Config-Name',listview1.Selected.Caption,true);
            vle1.InsertRow('Datasource-Name',listview1.Selected.SubItems[0],true);
            vle1.InsertRow('Service-URL',listview1.Selected.SubItems[1],true);
            vle1.InsertRow('LFS-Cache-Path',listview1.Selected.SubItems[2],true);
            vle1.InsertRow('LFS-Config-Name',listview1.Selected.SubItems[3],true);
            vle1.Strings.EndUpdate;

            
            vle2.Strings.Clear;
            vle2.Strings.BeginUpdate;

            if listview1.Selected.SubItems[4]<>'then
                                 begin
            vle2.TopRow:=vle1.InsertRow('Datasource-Name',listview1.Selected.SubItems[4],true);
                                             end
                                             else begin
                                                 showmessage('The Configuration ' +listview1.Selected.Caption + ' is corrupt!');
                                             end;

          vle2.InsertRow('Database-Type',listview1.Selected.SubItems[5],true);

            vle2.InsertRow('Database-URL',listview1.Selected.SubItems[6],true);

            vle2.InsertRow('Database-Driver',listview1.Selected.SubItems[7],true);

           vle2.InsertRow('LFS-Config-Name',listview1.Selected.SubItems[8],true);

           vle2.InsertRow('LFS-Cache-Path',listview1.Selected.SubItems[9],true);
          try
            vle2.InsertRow('DB-User',listview1.Selected.SubItems[10],true);
          except
            begin
                          vle2.DeleteRow(6);

                                    vle2.InsertRow('DB-User','',true);
            end;
               end;
          try
            vle2.InsertRow('DB-Password',listview1.Selected.SubItems[11],true);

        except
            begin
                          vle2.DeleteRow(7);

                          vle2.InsertRow('DB-Password','',true);
            end;
          end;
           try
            vle2.InsertRow('LFS-User',listview1.Selected.SubItems[12],true);
             except
            begin
                          vle2.DeleteRow(8);

                          vle2.InsertRow('LFS-User','',true);
            end;
           end;
           try
            vle2.InsertRow('LFS-Password',listview1.Selected.SubItems[13],true);
             except
            begin
                          vle2.DeleteRow(9);

                          vle2.InsertRow('LFS-Password','',true);
            end;
           end;
           vle2.Strings.EndUpdate;
      
end
else exit;





end;
Selbst durch Anhaltepunkte finde ich nicht genau den Fehler, leider.

DAnke im Vorraus!
Arne
// u know? ID Service www.topsta.de
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#2

Re: Listenindex überschreitet das Maximum

  Alt 15. Dez 2006, 10:56
gibt es denn mindestens 14 subitems?
  Mit Zitat antworten Zitat
Benutzerbild von arne99
arne99

Registriert seit: 11. Jan 2005
Ort: Hamburg
158 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Listenindex überschreitet das Maximum

  Alt 15. Dez 2006, 11:00
Genau das ist es ja, die 14 SubItems sind mal vorhanden, und mal nicht.
Arne
// u know? ID Service www.topsta.de
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#4

Re: Listenindex überschreitet das Maximum

  Alt 15. Dez 2006, 11:06
dann liegt da dein fehler! vorher testen ob der jeweilige subitem existiert, dann erst darauf zugreifen!
  Mit Zitat antworten Zitat
Benutzerbild von arne99
arne99

Registriert seit: 11. Jan 2005
Ort: Hamburg
158 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Listenindex überschreitet das Maximum

  Alt 15. Dez 2006, 11:18
Jetzt habe ich komplett alle Abfragen so gemacht:

Delphi-Quellcode:
 try
         vle2.InsertRow('Database-Type',listview1.Selected.SubItems[5],true);
            except vle2.InsertRow('Database-Type','',true);
            end;
Jedoch kommt immer noch die Fehlermeldung! Was mache ich falsch?

Also er erkennt schon, dass dort nix ist (geprüft mit MSGBOX ausgabe), aber die Fehlerausgabe ist immer noch vorhanden.
Arne
// u know? ID Service www.topsta.de
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#6

Re: Listenindex überschreitet das Maximum

  Alt 15. Dez 2006, 11:56
Delphi-Quellcode:
 try
         vle2.InsertRow('Database-Type',listview1.Selected.SubItems[5],true); <-------- da greifst du auf ich denke mal ein nicht vorhandenes item zu! dann gibts ne fehlermeldung!
            except vle2.InsertRow('Database-Type','',true);
            end;
[/quote]

also vorher prüfen ob listview1.Selected.SubItems[5] existiert! schau dir mal den begriff assigned an!
  Mit Zitat antworten Zitat
Constructor

Registriert seit: 15. Dez 2006
6 Beiträge
 
#7

Re: Listenindex überschreitet das Maximum

  Alt 15. Dez 2006, 12:11
Hallo,

mit "ListView1.Items[0].SubItems.Count" kannst du prüfen, wieviele SubItems ein ListView- Eintrg enthält.
  Mit Zitat antworten Zitat
Benutzerbild von arne99
arne99

Registriert seit: 11. Jan 2005
Ort: Hamburg
158 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Listenindex überschreitet das Maximum

  Alt 15. Dez 2006, 12:34
Da ich keine for-to-do schleife nutze sondern alles manuell auslesen möchte (WEIL EBEN SO UNTERSCHIEDLCIHE SUBITEMS RUHIG FEHLEN KÖNNEN) hilft der .count nicht viel.

Also mit Try klappts nicht, mit Assign geht nix weil ich brauche TPErsistens (???)

und nun versuchte ich das hier:
Delphi-Quellcode:
if listview1.Items[4].Data <> nil then
                                        
            vle2.TopRow:=vle2.InsertRow('Datasource-Name',listview1.Selected.SubItems[4],true)

             else
                   showmessage('EEROR ES FUNZT');
= result: Klappt auch nicht.

Das muss eigentlich möglich sein odeR?
Arne
// u know? ID Service www.topsta.de
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Listenindex überschreitet das Maximum

  Alt 15. Dez 2006, 12:41
Hallo,

reicht es nicht, bei "fehlendem" SubItem ein SubItems.Add('') zu machen ?


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#10

Re: Listenindex überschreitet das Maximum

  Alt 15. Dez 2006, 12:41
Zitat von arne99:
...mit Assign geht nix...
ich hatte assigned gesagt!


wenn subitems fehlen, dann läuft der zähler nur bist count-1 !

wenn du 5 items hast mit der hausnummer (0..4) und die ersten zwei löschst, dann hast du danach 3 items mit der hausnummer (0..2)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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