Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 604

/ вопрос решён /

Доброго времени суток, уважаемые эксперты!
У меня задача перегрузить оператор деления в Delphi XE3 таким образом, чтобы результат при делении на ноль выдавал ноль без ошибки.

почитал интернет, написал перегрузку. ругается "[dcc32 Error] Unit1.pas(11): E2123 PROCEDURE, FUNCTION, PROPERTY, or VAR expected"
"[dcc32 Error] Unit1.pas(11): E2029 ',' or ':' expected but '(' found" и т.д.

Подскажите, как сделать чтоб работало. Очень надо, много формул, замучаюсь писать обработчик, а своя функция Divide(a,b) мешает сопровождать потом эти формулы. Очень надо перегрузку

Приложение:
  1. {{code}} unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7. Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
  8.  
  9. type
  10. TForm1 = class(TForm)
  11.  
  12. private
  13. { Private declarations }
  14. public
  15. { Public declarations }
  16. end;
  17.  
  18. var
  19. Form1: TForm1;
  20.  
  21. implementation
  22.  
  23. {$R *.dfm}
  24.  
  25. { TForm1 }
  26.  
  27. class operator TForm1.Divide(a, b: Double): Double;
  28. begin
  29. if b = 0
  30. then Result := 0
  31. else Result := a / b;
  32. end;
  33.  
  34. end.
  35. {{/code}}


Aндрей Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Aндрей (статус: 1-ый класс)
Вопрос отправлен: 27 ноября 2015, 08:45
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: dmistand

Здравствуйте, Aндрей!
Для Win32 версии Delphi перегрузка операторов для классов невозможно, она осуществима только для записей. Перегрузка операторов для классов доступна только для версии .NET.
Если вы измените тип с класс на запись, то данная ошибка пропадёт, но тогда вы, конечно, потеряете наследование.

http://www.decoding.dax.ru/practic/operator/operator.html

Ответ отправил: dmistand (статус: 1-ый класс)
Время отправки: 27 ноября 2015, 15:00
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 0.

27 декабря 2015, 14:01: Статус вопроса изменён на решённый (изменил модератор DNK)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 ноября 2017, 08:38
Выполнено за 0.04 сек.
Рейтинг@Mail.ru