AGB  ·  Datenschutz  ·  Impressum  







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

Strings in ListView vergleichen

Ein Thema von Onkelrossie · begonnen am 13. Aug 2006 · letzter Beitrag vom 17. Aug 2006
Antwort Antwort
Onkelrossie

Registriert seit: 7. Aug 2006
43 Beiträge
 
Delphi 7 Architect
 
#1

Re: Strings in ListView vergleichen

  Alt 16. Aug 2006, 00:17
Abend zusammen,
ich stehe schon wieder vor einem Problem.
ich habe nun wie oben beschrieben ein ListView in dem ich eine Spalte auf Unterschiede durchlaufe bzw. den Index wo ein neuer Wert anfängt in eine StringList speichere. Jetzt wollte ich die Spalte paralell daneben auf Gleichheit prüfen.

z.B.
Delphi-Quellcode:
SubItem1 | SubItem2 //Die Spalte "SubItem2" Definiert die Gruppe
---------|---------
gleich | a }
gleich | a } Gruppe1(SubItem1 = vollständig)
gleich | a }
         |
gleich | b }
ungleich | b } Gruppe2(SubItem1 <> vollständig)
ungleich | b }
SubItem2 durchlaufe ich ja schon wie beschrieben mit diesem Code womit ich den Index bekomme wo eine neue Gruppe anfängt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
  sl: TStringList;
begin
  sl:= TStringList.Create;
  for i := 0 to ListView1.Items.Count - 2 do
  if not (ListView1.Items[i].SubItems[2] = ListView1.Items[i+1].SubItems[2]) then
  sl.Add(IntToStr(i+1));
end;
Jetzt wollte ich, das auf Basis dieses Codes SubItem1 durchlaufen wird und den Index des letzten Items der jeweiligen Gruppe zurrück gibt, deren Items den Wert "gleich" haben. Solange in einer Gruppe noch ein wert namens "Ungleich" ist soll garnix passieren. Bis jetzt habe ich es wieder so weit hin bekommen das es mit der ersten Gruppe klappt. Aber danach scheint irgendwo was falsch zu laufen in den For Schleifen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, idx, c :integer;
  sl, slok: TStringList;
begin
  sl:= TStringList.Create;
  for i := 0 to ListView1.Items.Count - 2 do
  if not (ListView1.Items[i].SubItems[2] = ListView1.Items[i+1].SubItems[2]) then
  sl.Add(IntToStr(i+1));
  for idx := 0 to sl.Count - 2 do
  begin
    for I := StrToInt(sl.Strings[idx]) to StrToInt(sl.Strings[idx + 1]) do
    begin
      if Listview1.Items[i].SubItems[2] = 'gleichthen c := c + 1; //hier wusste ich nicht mehr so richtig wie ich weiter
      if c = StrToInt(sl.Strings[idx + 1]) then slok.add(sl.Strings[idx + 1]; //machen sollte und dabei ist das raus gekomen
    end;
  end;
end;
Ich hoffe ich konnte mein Problem verdeutlichen und es findet sich jemand der mir helfen kann.
Danke schonmal im vorraus an alle die sich die Zeit nehmen eine Lösung zu finden.


HG
Onkelrossie
  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 01:30 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 by Thomas Breitkreuz