Показать сообщение отдельно
  #2  
Старый 22.10.2012, 01:39
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Последняя ячейка имеет индекс Length()-1 или High(). Т.е. в твоем коде грубая ошибка - выход за пределы массива.
2. При смешении ты смещаешь все ячейка, что явно не правльно. Тебе надо начинать с той, которую ты нашел.
3. Не совсем понятно, что тебе надо в итоге получить. Впечатление, что ты делаешь что-то не то. Предположим, тебе надо получить список значений в первом массиве (A), которых нет во втором (B). тогда примерно так:
Код:
var
  A, B : Array Of String;
  I, J, K : Integer;
begin
  ... // Здесь заполнение массивов
  For I := High(A) DownTo Low(A) Do
    For J := Low(B) To High(B) Do
      If A[i] = B[J] Then
        Begin
          F := True;
          For K := I To High(A)-1 Do A[K] := A[K+1];
          SetLength(A,Length(A)-1);
          Break;
        End;
end;
Ответить с цитированием