[Delphi] zliczanie w listbox

0

Przypuśćmy, że mam w listbox umieszczony następujący tekst:

mama
mama
mama [a]
mama [a]
mama [a]
mama
mama [a]
mama [a]
mama [a]
mama [a]
mama
mama [a]

i chodzi mi o taką rzecz, że mam określić pozycję i ilość najwięcej występującego
wyrażenia w nawiasach [], ale te wyrażenia muszą występować skok lini o 1.
W tym przypadku będzie to 4 i pozycja 6
Nie mam pomysłu jak to rozwiązać ?

0

Na szybko, więc mogłem się gdzieś machnąć i zapewne można to zrobić inaczej.
Tu jest na przykładzie stałego tekstu [a], ale to już sobie możesz dopracować.

w type deklaruję rekord:

  TLicz = record
    pozycja : integer;
    ilosc : integer;
  end;

W kodzie:

var
  i : integer;
  flaga : boolean;
  tab : array of TLicz;
  maxValue, maxPosition : integer;
begin
  flaga := false;
  maxPosition := 0;
  maxValue := 0;

  for i := 0 to ListBox1.Items.Count - 1 do
    begin
    if (Pos('[a]', ListBox1.Items[i]) > 0) then
      begin
      if not flaga then
      begin
        flaga := true;
        SetLength(tab, High(tab) + 2);
        tab[High(tab)].pozycja := i;
        end;
      end
      else
        flaga := false;

    if flaga then
      tab[High(tab)].ilosc := tab[High(tab)].ilosc + 1;

    end;

  //tu szukam największej liczby wystąpień 
  for i := 0 to High(tab) do
    if tab[i].ilosc > maxValue then
      begin
      maxValue := tab[i].ilosc;
      maxPosition := tab[i].pozycja;
      end;

  //wynik wypisuję na pasku
  Caption := IntToStr(maxPosition) + '/' + IntToStr(maxValue);
0

madmike Twoj kod działa poprawnie miałem z tym problem dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1