Показать сообщение отдельно
  #2  
Старый 28.01.2014, 08:01
royun royun вне форума
Прохожий
 
Регистрация: 19.08.2011
Сообщения: 28
Репутация: 10
По умолчанию

Исправил код и заработало:

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
AllAB: array of int64;
kolvoAB: array of integer; 
i,j,k,kolAB, n: integer;
begin
n:=StringGrid1.RowCount;
SetLength(AllAB,n);
SetLength(kolvoAB,n);
for i:=1 to n-1 do
    begin
    AllAB[i]:= StrToInt64(StringGrid1.Cells[0,i]+StringGrid1.Cells[1,i]);
    end;
i:=1;
while i <= n  do
begin
kolAB:=1;
j:=i+1;
    while j <= n do
    begin
    if AllAB[i]=AllAB[j] then
      begin
      for k:=j to n-1 do AllAB[k]:=AllAB[k+1];
      kolAB:=kolAB+1;
      n:=n-1;
      end
    else j:=j+1;
    end;
kolvoAB[i]:=kolAB;
i:=i+1;
end;
StringGrid1.RowCount:=n;
for i := 1 to n-1 do
StringGrid1.cells[2,i]:=IntToStr(kolvoAB[i]);
KolvoAB:=nil;
AllAB:=nil;
end;

Если цифры в колонках 10-значные то вываливается ошибка "is not valid integer value" и это понятно: 20-значное число выходит за рамки int64.
Я понимаю что механизм сравнения у меня неправильный. И хотел бы послушать Ваши предложения.
Изображения
Тип файла: png err.png (18.1 Кбайт, 1 просмотров)
Ответить с цитированием