Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   schleifen problem (https://www.delphipraxis.net/152470-schleifen-problem.html)

pwcca 23. Jun 2010 17:06

Delphi-Version: 2005

schleifen problem
 
hallo liebe Delphipraxiscommunity

Ich habe ein Problem mit meiner Schleife
Mit dieser Schleife moechte ich vom StringGrid Daten herausholen, diese sollen sich aber nicht in der ListBox widerholen
Ich hoffe ihr versteht mich

Delphi meldet sich immer mit der Meldung:

Listenindex ueberschreitet maximum

Ja ist ein Anfaenger problem, aber ich steh grad auf der Leitung
hoffe es kann mir jemand helfen

Delphi-Quellcode:
  for row := 0 to StringGrid1.RowCount - 1 do
    begin
      repeat
        if StringGrid1.Cells[0,row]=ListBox1.Items[b] then
        begin
          ListBox1.Items.Add(StringGrid1.Cells[0, row]);
          b:=ListBox1.Count-1;
        end
        else b:=b+1;
      until (b=ListBox1.Count-1);
    end;

rollstuhlfahrer 23. Jun 2010 17:09

AW: schleifen problem
 
Eventuell unterstützt Listbox.Items das Handling von Duplikaten. Einfach auf xxIgnore stellen. Wenn die in TListbox eingefügten TStrings das nicht können, dann kann das die TStringlist. Einfach dort die Duplikate ignorieren lassen und am Ende ein Listbox.Items.AddStrings(Deine_StringList); und fertig.

Bernhard

p80286 23. Jun 2010 17:16

AW: schleifen problem
 
mit welchem Wert kommt b denn in die Schleife?
wann kommt denn die Meldung? Am Beginn, irgendwann in der Mitte oder vielleicht am Ende der Schleife?

Gruß
K-H

IceBube 23. Jun 2010 17:20

AW: schleifen problem
 
Hallo!

Ich glaub auch^ du hast vergessen "b" zu initialisieren..

Prüfen ob ein Eintrag in der ListBox ist kannst du mit..
Delphi-Quellcode:
if ListBox1.Items.IndexOf(String) = -1 then
begin
 //Existiert noch nicht...
end;
lg

pwcca 23. Jun 2010 17:43

AW: schleifen problem
 
ne sorry b hab ich initialisier
mit b:=0 faengt er an

und ich habs hinbekommen
danke fuer die schnelle hilfe

hier der fertige Code

Delphi-Quellcode:
  for row := 0 to StringGrid1.RowCount - 1 do
    begin
        if ListBox1.Items.IndexOf(StringGrid1.Cells[0,row]) = -1 then
          ListBox1.Items.Add(StringGrid1.Cells[0, row]);
    end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 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