Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2012, 16:43   #1
dpmkh
Пользователь
 
Регистрация: 12.10.2012
Сообщений: 11
По умолчанию ПРоблема с функцией!

Всем привет!

Вот моя функция:
Код:
Function Through(k,m:integer; N_f:word):longword;
   Begin
    if (k<=N_f) and (m<=N_f) then
      if m>k then result:=sqr(m+1)-k
             else result:=sqr(k)+1+m
       else
          if (k>N_f) and (m<=N_f) then
             result:=sqr(N_f+1)+2*(k-N_f-1)*N_f+k-N_f+m
          else
          if (k<=N_f) and (m>N_f) then
              result:= sqr(N_f+1)+2*(m-N_f)*N_f+m-N_f-k
          else showmessage ('Дискретные координаты -вне области !');
    end;
При запуске выдаёт такую ошибку:

Return value of function 'Through' might be undefined

Подскажите пожалуйста, в чём может быть проблема?
dpmkh вне форума Ответить с цитированием
Старый 12.10.2012, 16:47   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

проблема в том что - "Return value of function 'Through' might be undefined".
вы не понимаете что тут написано, или не можете перевести на родной или ..?
eval вне форума Ответить с цитированием
Старый 12.10.2012, 17:13   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Это значит, что "возвращаемое значение функции может быть не определено" (вольно-дословный перевод).
Лучше перепишите так:
Код:
Function Through(k,m:integer; N_f:word; var res: longword):integer;
   Begin
    result := 0;
    if (k<=N_f) and (m<=N_f) then
      if m>k then res:=sqr(m+1)-k
             else res:=sqr(k)+1+m
       else
          if (k>N_f) and (m<=N_f) then
             res:=sqr(N_f+1)+2*(k-N_f-1)*N_f+k-N_f+m
          else
          if (k<=N_f) and (m>N_f) then
              res:= sqr(N_f+1)+2*(m-N_f)*N_f+m-N_f-k
          else 
            result:=-1;
    end;
...
if Through(k,m,n_f,res) = -1 then
    showmessage ('Дискретные координаты -вне области !');
или
Код:
Function Through(k,m:integer; N_f:word):longword;
   Begin
    result:=0;
    if (k<=N_f) and (m<=N_f) then
      if m>k then result:=sqr(m+1)-k
             else result:=sqr(k)+1+m
       else
          if (k>N_f) and (m<=N_f) then
             result:=sqr(N_f+1)+2*(k-N_f-1)*N_f+k-N_f+m
          else
          if (k<=N_f) and (m>N_f) then
              result:= sqr(N_f+1)+2*(m-N_f)*N_f+m-N_f-k
          else showmessage ('Дискретные координаты -вне области !');
    end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 12.10.2012, 18:28   #4
dpmkh
Пользователь
 
Регистрация: 12.10.2012
Сообщений: 11
По умолчанию

Всёравно не работает, дело в том что эта функция работала без проблем в паскале, а в делфи никак..Ещё выдаёт такую ошибку: Project Project2.exe raised exception class EInvalidOp with message ' Invalid floating point operation'. Process stopped. Use Step or Run to continue.
Можно ли посмотреть в какой строчке оменно ошибка?

Последний раз редактировалось dpmkh; 12.10.2012 в 18:31.
dpmkh вне форума Ответить с цитированием
Старый 12.10.2012, 18:35   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Use Step or Run to continue.
А на какой остановилась?
eval вне форума Ответить с цитированием
Старый 12.10.2012, 18:40   #6
dpmkh
Пользователь
 
Регистрация: 12.10.2012
Сообщений: 11
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
А на какой остановилась?
Вроде вот на этой строчке

Xmax:= X_Node^[1]; Xmin:= X_Node^[1];
dpmkh вне форума Ответить с цитированием
Старый 12.10.2012, 18:42   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Можно ли посмотреть в какой строчке оменно ошибка?
Ставите breakpoint и f7/f8 перемещаетесь по строкам кода.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с функцией Madmaxisss Паскаль, Turbo Pascal, PascalABC.NET 5 23.08.2012 13:46
проблема с функцией Си blain Помощь студентам 1 19.02.2012 21:06
Проблема с функцией MeTeOpA C# (си шарп) 6 11.07.2011 00:07
проблема с функцией saix Общие вопросы C/C++ 14 28.10.2010 19:07