![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Вот такая проблема. Вот код:
Код:
i,j:integer; data: array of integer; okno: array of array of integer; E: array of array of integer; procedure TForm1.Button1Click(Sender: TObject); begin setlength(data,10000); setlength(okno,199); setlength(E,199); for i:=0 to (10000-1) do data[i]:=i+1; for i:=0 to (trunc(199-1)) do begin setlength(okno[i],100); setlength(E[i],1); for j:=0 to (100-1) do begin okno[i,j]:=data[i*50+j]; E[i,0]:=E[i,0]+sqr(okno[i,j]); if i=160 then begin memo1.Lines.Add(inttostr(sqr(okno[i,j]))); memo2.Lines.Add(inttostr(E[i,0])); end; end; end; end; end. Причем если не использовать возведение в квадрат(красным), то все работает как и должно. Пока писал пост смекнул что возможно при возведении в квадрат число слишком большое выходит и не помещается в integer, поменял его на int64 и все нормально заработало, я уже стал праздновать победу, но для дальнейшей проверки ввел другие данные: Код:
for i:=0 to (10000-1) do data[i]:=i+1; data[1002]:=1000000; ![]() Мало того, еще и в Memo1 на месте где должен был быть 1000000000000 стоит рандомное отрицательное значение! А ведь int64 должен поддерживать такое число. Что делать? |
#2
|
||||
|
||||
![]() Юзай extended.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |