Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для hippocamus
2 / 2 / 0
Регистрация: 08.03.2016
Сообщений: 48

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

29.05.2017, 02:28. Показов 2546. Ответов 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)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.05.2017, 02:28
Ответы с готовыми решениями:

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

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

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

3
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
29.05.2017, 06:02
я так понимаю, версия делфи не семерочка?
Хелперы не наследуются и не виртуализируются, поэтому заставить всю систему отказаться от своих готовых в пользу вашего вы не сможете.
1
500 / 346 / 200
Регистрация: 20.10.2016
Сообщений: 1,101
29.05.2017, 10:09
Лучший ответ Сообщение было отмечено 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;
Миниатюры
Переопределить одну из функций helper   Переопределить одну из функций helper  
1
29.05.2017, 13:29

Не по теме:

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.05.2017, 13:29
Помогаю со студенческими работами здесь

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

Объединение трёх функций в одну
Всем привет, в JavaScript я не так давно, прошу прощение если задаю 'глуповатый' вопрос. Перейду сразу к сабжу. Есть три функций, т.е....

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

ATtiny2313. Несколько функций на одну кнопку
Всем привет. Люди, нужна помощь. У меня есть програмка, которая после каждого нажатия кнопки, увеличивает значение на 1. Начальное...

Ajax объединение нескольких функций в одну
function my_ajax_api(name_action, result_out, change_css='', type_data='html', type_send='POST', param_1='', param_2='', param_3='',...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru