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] = 'gleich' then 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