|
Вопрос # 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) мешает сопровождать потом эти формулы. Очень надо перегрузку
Приложение: Переключить в обычный режим- {{code}} unit Unit1;
-
- interface
-
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
-
- type
- TForm1 = class(TForm)
-
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
-
- { TForm1 }
-
- class operator TForm1.Divide(a, b: Double): Double;
- begin
- if b = 0
- then Result := 0
- else Result := a / b;
- end;
-
- end.
- {{/code}}
|
Вопрос задал: 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)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|