@_13th_Dragon - widzę że znasz już program pytacza (ja go nie kojarzę); Ja nie pamiętam póki co poprzednich wątków i programów pytacza, więc podałem rozwiązanie, które operuje bezpośrednio na danych komponentu;
Przykład kodu, który realizuje dokładnie to, o czym napisałeś w pierwszym poście tego wątku:
procedure TForm1.btnProcessClick(Sender: TObject);
var
intFirst, intSecond: Integer;
strRow: AnsiString;
begin
intFirst := 0;
while intFirst < lbData.Items.Count - 1 do
begin
strRow := Copy(lbData.Items[intFirst], 1, 11);
intSecond := intFirst + 1;
while intSecond < lbData.Items.Count do
begin
if SameText(strRow, Copy(lbData.Items[intSecond], 1, 11)) then
begin
lbData.Items[intFirst] := lbData.Items[intFirst] + '[' +
lbData.Items[intSecond][Length(lbData.Items[intSecond]) - 1] + ']';
lbData.Items.Delete(intSecond);
end
else
Inc(intSecond);
end;
Inc(intFirst);
end;
end;
Poniżej zrzuty ekranu - po lewej przed połączeniem itemów, a po prawej już po:
Jak widać działa prawidłowo, za to podane przez Ciebie dane wyjścia w pierwszym poście nie wyglądają na poprawne;
Tyle że z tego co napisał @_13th_Dragon wynika, że w komponencie nie masz wcale literek, a numery lotka, więc zarówno powyższy kod, jak i w ogóle podane przez Ciebie dane wejścia i wyjścia są wyssane nie napiszę skąd i mojego kodu nie będziesz mógł wykorzystać;
Jeśli faktycznie nadal piszesz coś związanego z lotkiem, to trzymaj dane w oddzielnych strukturach, a jedynie wyświetlaj je w komponencie; Teraz nawet nie masz jak ich posprawdzać, bo wszystko połączyłeś w łańcuchy i wpakowałeś do komponentu;
Sugeruję tak jak poprzednik trzymać zestawy sześciu liczb w zbiorze i normalnie je porównywać operatorem równości, zamiast tracić czas na ekstrakcję i dekonwersję liczb z łańcuchów z powrotem na liczby.