Hallo Hawkeye,
du machst deinem nick alle Ehre - natürlich hast du Recht. Es sind sogar noch weitere Fehler vorhanden, da ich die Prozedur recht kurzentschlossen beim Posten noch verallgemeinert habe: der Hinweis auf die
Unit StrUtils (wegen IfThen) fehlt und im Aufrufbeispiel habe ich den Parameter index gar nicht bedient. Hier der korrigierte Code:
Delphi-Quellcode:
procedure ExtractGroups(li: TListItems; index: Word; s: TStrings);
var
i: Integer;
sGroup, sTest: String;
begin
s.Clear;
sGroup := '';
for i := 0 to Pred(li.Count) do
begin
if index = 0
then sTest := li[i].Caption
else sTest := li[i].SubItems[Pred(index)];
if (i = 0) or (sTest <> sGroup) then
begin
sGroup := sTest;
s.Values[sGroup] := IntToStr(i);
end;
end;
end;
procedure TDemoForm.ButtonClick(Sender: TObject);
begin
ExtractGroups(ListView.Items, 3, ValueListEditor.Strings);
end;
Aber immernoch geht es nur ums Prinzip - Prüfungen fehlen und eine implizite Voraussetzung sind sortierte Spaltenwerte.
Freundliche Grüße vom marabu