Возьмите этот небольшой примерный класс (не мой настоящий код, но он раскрывает проблему):
Convert = class(TObject)
public
class function ToString(value: Double): String; overload;
class function ToString(value: TDateTime): String; overload;
end;
Он компилируется до тех пор, пока вы не попытаетесь использовать функции Double
или TDateTime
As
В:
var
d: Double;
begin
d := 99.99;
ShowMessage(Convert.ToString(d));
Вы получите эту ошибку компиляции: неоднозначный перегруженный вызов на "ToString".
Проблема сводится к тому, что TDateTime
является типом Double
Мой вопрос: как вы справляетесь с этим типом проблемы?
РЕДАКТИРОВАТЬ - я НЕ ищу решение для приведенного примера
Я нашел 3 Решения до сих пор:
- Переименуйте одну из двух функций
- Добавьте параметр "Dummy" к одной из двух функций
- Измените параметры на типы Var, это имеет тот недостаток, что я больше не могу вызывать эту функцию с константами
Есть ли там какие-либо другие решения?