AGB  ·  Datenschutz  ·  Impressum  







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

listbox mit stringgrid vergleichen

Ein Thema von pwcca · begonnen am 11. Jul 2010 · letzter Beitrag vom 12. Jul 2010
Antwort Antwort
pwcca

Registriert seit: 23. Jun 2010
6 Beiträge
 
Delphi 2010 Professional
 
#1

listbox mit stringgrid vergleichen

  Alt 11. Jul 2010, 00:03
Delphi-Version: 2005
hallo liebe community ich hab mal wider n schleifen problem

ich habe in meiner listbox ein par items geladen, und diese moechte ich jetzt mit meinem stringgrid vergleichen
nur wenn ich das jetzt so schreib sagt der mir: Listenindex ueberschreitet maximum

Delphi-Quellcode:
for b := 0 to ListBox1.Items.Count - 1 do
begin
REPEAT
     if StringGrid1.Cells[7,row2]=ListBox1.Items[b] then
       //dann kopiert er mir die zeile, hat aber genau mit dieser if formel ein problem

repeat schleife hab ich geschlossen, und die kopierbefehlen rausgenommen (zur uebersichtlichkeit)

Geändert von mkinzler (11. Jul 2010 um 09:28 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#2

AW: listbox mit stringgrid vergleichen

  Alt 11. Jul 2010, 08:13
Und Du bist sicher, dass nicht StringGrid1.Cells[7,row2] der Übeltäter ist? Weil der Zugriff auf die Listbox kann eigentlich nicht falsch sein.
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#3

AW: listbox mit stringgrid vergleichen

  Alt 11. Jul 2010, 08:15
Wozu das repeat mitten im for? Ich glaube das sollte dort nicht sein...
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#4

AW: listbox mit stringgrid vergleichen

  Alt 11. Jul 2010, 08:48
Übrigens gibt es
Listbox.Items.Indexof (string)
Das spart Dir das manuelle Iterieren durch die Einträge mittels for-Schleife.
  Mit Zitat antworten Zitat
pwcca

Registriert seit: 23. Jun 2010
6 Beiträge
 
Delphi 2010 Professional
 
#5

AW: listbox mit stringgrid vergleichen

  Alt 12. Jul 2010, 01:30
ich glaub ihr habt mich falsch verstanden
ich moechte durch eine liste gehen die ich in einer listbox geladen habe
ist die zelle identisch mit dem listbox eintrag soll mir mein programm diese zeile in ein anderes stringgrid kopieren und dann das stringgrid weiter absuchen ob er noch eine zelle
findet mit demselben wort usw, bis er am stringgridende ankommt, dann einen eintrag bei der listbox weiter und das ganze wider von vorn
wenn ich dass jetzt mit ListBox1.Items.IndexOf mache kopiert er mir zeile fuer zeile aber nicht die identischen

Code:
if ListBox1.Items.IndexOf(StringGrid1.Cells[7,row2]) = - 1 then
begin
 for row2 := 6 to StringGrid1.RowCount - 1 do
  begin
    StringGrid2.Cells[0,row3]:=copy(stringGrid1.Cells[0,row2], 0,300);
    StringGrid2.Cells[1,row3]:=copy(stringGrid1.Cells[1,row2], 0,300);
    StringGrid2.Cells[3,row3]:=copy(stringGrid1.Cells[3,row2], 0,300);
    StringGrid2.Cells[6,row3]:=copy(stringGrid1.Cells[6,row2], 0,300);
    StringGrid2.Cells[7,row3]:=copy(stringGrid1.Cells[7,row2], 0,300);
    StringGrid2.Cells[9,row3]:=copy(stringGrid1.Cells[9,row2], 0,300);
    row3:=row3+1;
  end;
   row3:=1;
   for cols := 0 to StringGrid2.ColCount - 1 do
    StringGrid2.Cols[cols].Clear;
end;
habe es mit
Code:
if ListBox1.Items.IndexOf(StringGrid1.Cells[7,row2]) = 1 then
probiert
dann macht er gar nichts

hier nochmal der alte code mit dem fehler

Code:
for b := 0 to ListBox1.Items.Count - 1 do
row2:=0;
 begin
   REPEAT
    StringGrid2.Cells[0,0]:='Datum';
    StringGrid2.Cells[1,0]:='Zeit';
    StringGrid2.Cells[2,0]:='Säule';
    StringGrid2.Cells[3,0]:='Registrierungsnummer';
    StringGrid2.Cells[6,0]:='Km-stand';
    StringGrid2.Cells[7,0]:='Anwender';
    StringGrid2.Cells[9,0]:='Menge';

     if StringGrid1.Cells[7,row2]=ListBox1.Items[b] then                     //in dieser zeile gibt er den fehler aus
      begin
        StringGrid2.Cells[0,row3]:=copy(stringGrid1.Cells[0,row2], 0,300);
        StringGrid2.Cells[1,row3]:=copy(stringGrid1.Cells[1,row2], 0,300);
        StringGrid2.Cells[3,row3]:=copy(stringGrid1.Cells[3,row2], 0,300);
        StringGrid2.Cells[6,row3]:=copy(stringGrid1.Cells[6,row2], 0,300);
        StringGrid2.Cells[7,row3]:=copy(stringGrid1.Cells[7,row2], 0,300);
        StringGrid2.Cells[9,row3]:=copy(stringGrid1.Cells[9,row2], 0,300);
        row3:=row3+1;
      end;
     row2:=row2+1;
     row3:=1;

   for cols := 0 to StringGrid2.ColCount - 1 do
   StringGrid2.Cols[cols].Clear;
   UNTIL (row2=StringGrid1.RowCount-1);
 end;

hoffe ihr koennt mir helfen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: listbox mit stringgrid vergleichen

  Alt 12. Jul 2010, 08:15
Schau doch mal hier Delphi-Referenz durchsuchenTStringList.IndexOf da steht des Rätsels Lösung

Irgendwie ist dein Code aber relativ wirr und ich kann mir nicht vorstellen, das dieser Code ansatzweise das tut was du möchtest:
Delphi-Quellcode:
row3 := 1;
for row2 := 6 to StringGrid1.RowCount - 1 do
  if ListBox1.Items.IndexOf(StringGrid1.Cells[7,row2]) = - 1 then
    begin
      StringGrid2.Cells[ 0, row3 ] := copy( stringGrid1.Cells[ 0, row2 ], 0, 300 );
      StringGrid2.Cells[ 1, row3 ] := copy( stringGrid1.Cells[ 1, row2 ], 0, 300 );
      StringGrid2.Cells[ 3, row3 ] := copy( stringGrid1.Cells[ 3, row2 ], 0, 300 );
      StringGrid2.Cells[ 6, row3 ] := copy( stringGrid1.Cells[ 6, row2 ], 0, 300 );
      StringGrid2.Cells[ 7, row3 ] := copy( stringGrid1.Cells[ 7, row2 ], 0, 300 );
      StringGrid2.Cells[ 9, row3 ] := copy( stringGrid1.Cells[ 9, row2 ], 0, 300 );
      row3 := row3 + 1;
  end;
Was mir vor allem nicht einleuchtet, warum du im StringGrid2 NACH der Aktion alle Spalten-Inhalte wieder löschen willst?
Ich hoffe auch, dass du VOR diesem Code dafür sorgst, dass in StringGrid2 genug Zeilen vorhanden sind.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (12. Jul 2010 um 08:37 Uhr)
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#7

AW: listbox mit stringgrid vergleichen

  Alt 12. Jul 2010, 08:31
Delphi-Quellcode:
for b := 0 to ListBox1.Items.Count - 1 do
row2:=0;
 begin
   REPEAT
Das wird aber wohl nicht gemeint sein. Die For Schleife führt nur x male row2 := 0; aus.
Kannst Du nochmal den Code so posten, wie Du es Dir wirklich vorstellst? Wahrscheinlich (aber eben nicht sicher) ist nur die Zeile mit dem begin vertauscht.

Und in der Repeat Schleife immer wieder die Überschriften neu zu setzen ist auch nicht sonderlich zielführend.

Delphi-Quellcode:
   for cols := 0 to StringGrid2.ColCount - 1 do
   StringGrid2.Cols[cols].Clear;
Und wenn ich das richtig sehe, wird am Ende jeden Schleifendurchgangs der Repeat Schleife das Stringgrid2 komplett gelöscht.

Geändert von idefix2 (12. Jul 2010 um 08:51 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 06:58 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