Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
hippocamus
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 38
#1

Переопределить одну из функций helper

29.05.2017, 02:28. Просмотров 846. Ответов 3
Метки нет (Все метки)

Как сделать чего-то такого:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
interface
 
type
  TStringHelper = record helper(TStringHelper) for string
    function ToInteger: Integer; overload;
  end;
 
implementation
 
function TStringHelper.ToInteger: Integer;
begin
  try
    inherited;
  except
    Result := -1;
  end;
end;
Но вот так не получается. Никаких наследований, вроде, не поддерживается?
Компилилуется следующий код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
interface
 
type
  TIntString = record helper for string
    function ToInteger: Integer;
  end;
 
implementation
 
function TIntString.ToInteger: Integer;
begin
  try
    Result := StrToInt(Self);
  except
    Result := -1;
  end;
end;
Но при этом я не могу заставить все библиотеки использовать свою подменяющую функцию. Что делают обычно в этом случае?
(-1 при невозможности конверсии мне нужно получать и от всех сторонних библиотек, использующих хелпер!)

+ да, не могу понять, почему в названии темы нельзя использовать слова "хелпер", "хэлпер", "helper", "рекорд-хелпер".
Вообще еле создал тему.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2017, 02:28
Ответы с готовыми решениями:

Как переопределить процедуру перерисовки?
В нете полно статей как сделать цветной DBGrid. Нужно обработать...

превратить много функций в одну...
Вот вопрос, к примеру я хочу создать свою функцию, в которую прописать функции...

Упрощение функций или объединение их в одну
Есть 2 функции: function ElseConnect(url: String): Boolean; var hSession,...

Из OnKeyDown переопределить Key для OnKeyPress
Задача: при нажатии определенных клавиш на клавиатуре задать для ввода в...

из 4 функций сделать одну
Помогите пожалуйста из 4 функций сортировки сделать одну, но чтобы работала на...

3
krapotkin
3397 / 3009 / 1042
Регистрация: 14.04.2014
Сообщений: 14,590
Записей в блоге: 15
29.05.2017, 06:02 #2
я так понимаю, версия делфи не семерочка?
Хелперы не наследуются и не виртуализируются, поэтому заставить всю систему отказаться от своих готовых в пользу вашего вы не сможете.
1
TFullControl
398 / 322 / 189
Регистрация: 20.10.2016
Сообщений: 1,025
29.05.2017, 10:09 #3
Лучший ответ Сообщение было отмечено hippocamus как решение

Решение

Достаточно дать такой функции свое имя и все работает:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
type
  TIntString = record helper for string
    function TryToInt: Integer;
  end;
 
function TIntString.TryToInt: Integer;
begin
 try
    Result := StrToInt(Self);
  except
    Result := -1;
  end;
end;
Пример:
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Button1Click(Sender: TObject);
  var s: string;
    i: integer;
begin
  s:=Edit1.Text;
  i:=s.TryToInt;
  ShowMessage(i.ToString);
end;
1
Миниатюры
Переопределить одну из функций helper   Переопределить одну из функций helper  
DenNik
29.05.2017, 13:29     Переопределить одну из функций helper
  #4

Не по теме:

Цитата Сообщение от hippocamus Посмотреть сообщение
не могу понять, почему в названии темы нельзя использовать слова "хелпер", "хэлпер", "helper", "рекорд-хелпер".
потому что согласно правилам форума, темам нужно давать осмысленные имена, отображающие суть проблемы, поэтому движок форума согласно этому правилу не дает создать тему с подобными словами в заголовке

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2017, 13:29
Привет! Вот еще темы с ответами:

Программа не выполняет одну из функций
у меня получается сделать умножение а с суммой не могу справится, помогите...

Соединение нескольких функций в одну
Здравствуйте! Только-только начал осваивать маткад и столкнулся с проблемой. В...

Объединить несколько функций в одну
Подскажите, пожалуйста! Фрагменты 1 и 2 нужно забрать в одну функцию, фр. 3 и 4...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru