powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / помогите, работа стоит :(
6 сообщений из 6, страница 1 из 1
помогите, работа стоит :(
    #32259537
Фотография GroZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде бы простейшая функция, ничего постороннего не использует ...
НО в некоторых случаях выдаёт ошибку "Integer owerflow."
бился я над этой ошибкой долго, но эта функция вызывается в таких местах что отследить ошибку очень трудно ... по крайней мере мне не удалось. может я не вижу чегото очевидного?? :(

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
function TForm1.Solve(const px, py : integer) : integer;
Type
   T_MX_ID = (miLeft, miRight, miTop, miBottom, miFront, miUnFront);
const
    MX_Relations : array[T_MX_ID, T_MX_ID] of Boolean = ((True, False, True, True, False, True),
                                                         (True, False, True, True, False, True),
                                                         (True, False, True, True, False, True),
                                                         (True, False, True, True, False, True),
                                                         (True, False, True, True, False, True),
                                                         (True, False, True, True, False, True));
    General = miFront;
    Power = ((Ord(High(T_MX_ID)) +  1 )*(Ord(High(T_MX_ID)) +  1 ));
Var
   i, j : T_MX_ID;
   ks, Nextks : set of T_MX_ID;
begin
   ks := [];
   for i := Low(T_MX_ID) to High(T_MX_ID) do begin
      Nextks := [];
      if (px*py) div Power = (Ord(i)*Ord(General)) div Power then ks := ks + [i];
      for j := High(T_MX_ID) downto Low(T_MX_ID) do begin
         if MX_Relations[i][j] then
            Nextks := Nextks + [j]
         Else
            Nextks := Nextks + ([j] * ks);
      end;
      ks := (ks - Nextks) + (Nextks - ks);
   end;
   Result :=  0 ;
   for i := Low(T_MX_ID) to High(T_MX_ID) do begin
      if i in ks then Result := Result +  1 ;
      Result := Result shl  1 ;
   end;
end;


в параметры передаются нормальные значения - это точно. Помогите пожалуйста ...
...
Рейтинг: 0 / 0
помогите, работа стоит :(
    #32259546
Speaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй поставить int64, принимая во внимание вот это:

Код: plaintext
1.
2.
3.
4.
5.
Note:	
Most standard routines that take integer arguments truncate Int64 values to  32  bits. 
However, the High, Low, Succ, Pred, Inc, Dec, IntToStr, and IntToHex routines
fully support Int64 arguments. 
Also, the Round, Trunc, StrToInt64, and StrToInt64Def functions return Int64 values. 
A few routines—including Ord—cannot take Int64 values at all.

и посмотри что получится.
...
Рейтинг: 0 / 0
помогите, работа стоит :(
    #32259598
Фотография GroZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоже самое ...

но ведь в принципе Result не должен принимать значения больше чем 2 ^ 6 ....?
...
Рейтинг: 0 / 0
помогите, работа стоит :(
    #32259622
Speaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO, только пошаговая отладка...
...
Рейтинг: 0 / 0
помогите, работа стоит :(
    #32259636
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот именно ,
сдесь лутьше не полентся с калькулятором посидеть и посмотреть какие зачения получаются .
...
Рейтинг: 0 / 0
помогите, работа стоит :(
    #32259650
Фотография GroZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перегрузил дельфу, оказывается эта ошибка была совсем в другом месте ... глючила дельфа не там позиционировала где надо ... всё исправил.
Спасибо всем, надо пойти поспать всётаки :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / помогите, работа стоит :(
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]