|
|
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
X-Cite, не это почти то же самое, только с использованием лямбла-функций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2018, 09:31 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Valery_BX11Не смог найти. Поэтому вопрос. А есть ли у Delphi встроенный способ создать словарь с регистронезависимым (case-insensitive) поиском по ключам? Или нужно самому пилить? Код: pascal 1. Не понял... недавно использовал именно TIStringComparer.Ordinal и регистронезависимость не работала, а теперь работает ок. наверное я где-то ещё обшибся. спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2018, 09:33 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
X11Valery_Bпропущено... Код: pascal 1. я пробовал Ordinal - он регистразависим Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2018, 09:46 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2018, 09:54 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
X11Не понял... недавно использовал именно TIStringComparer.Ordinal и регистронезависимость не работала, а теперь работает ок. наверное я где-то ещё обшибся. спасибо Ок. По теме - не создавай функции/процедуры, а создавай классы. Как было предложено ранее: Код: pascal 1. 2. 3. 4. 5. 6. С таким кодом, будет гораздо проще работать и понимать. Ты всегда можешь инициализировать класс так, как нужно тебе в конкретном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2018, 09:57 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Valery_B, да верю, я верю, уже перепроверил и убедился, что ты прав. Я не знаю, что не так у меня было в пенрвый раз, почему не сработало. Я именно с TIStringComparer.Ordinal и начинал. вот и в справке написано:Возвращает объект TStringComparer, который выполняет сравнение строк с учетом регистра ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2018, 09:57 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
X11Не понял... недавно использовал именно TIStringComparer.Ordinal и регистронезависимость не работала, а теперь работает Вру. Скорей всего я "TIStringComparer.Ordinal" хотел использовать, но не использовал, т.к. полез в справку, а там написано, что - зависит от регистра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2018, 09:59 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
X11Я не знаю, что не так у меня было в пенрвый раз, почему не сработало. Я именно с TIStringComparer.Ordinal и начинал. Такое у всех было) Потому что ты делал это в большом проекте, и тестировал не в тех местах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2018, 09:59 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Лол, чудаки из эмбы свою справку так и не исправили -- до сих пор стоит текст про регистрозависимость: http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Generics.Defaults.TIStringComparer.Ordinal Тогда как в коде там AnsiLowerCase используется (т.е. не зависит от регистра): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2018, 10:05 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
JaDi, Ха, прикольно... Ребята жгут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2018, 10:14 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Кстати, если правильно помню, то использование такого словаря приводило к утечке памяти в одной из версий делфи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2018, 12:08 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
JaDi Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Неужели две конвертации строк и бинарное сравнение быстрее непосредственного сравнения без учета регистра? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2018, 10:26 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Василий 2, А что такое "непосредственное сравнения без учета регистра" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2018, 10:40 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
zinpubВасилий 2, А что такое "непосредственное сравнения без учета регистра" ? AnsiCompare с параметром ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2018, 14:21 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Василий 2, Да так быстрее, но CompareString - на мой взгляд, несколько не подходит в данном случае, тк результат сравнения не всегда однозачен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2018, 14:38 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Немножко переделал. Теперь в словаре живут не ссылки процедуры, а строковые имена процедур. Кто работал с RTTI, пожалуйста, подскажите, как выполнить метод по имени. Читаю про TRttiContext, TRTTIType и TRTTIMethod примеры и справку, не могу врубиться. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2018, 17:40 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2018, 17:52 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
вроде бы, но не разобрался как правильно ему передать параметры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2018, 19:29 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. В вашем случае скорее всего так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2018, 20:36 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Ошибся выше, надо так: Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2018, 20:37 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Весело настанет когда, пользователь случайно, а может и не случайно используя уже какой - то метод, вызовет Invoke с типом объявленным посредством type тот же type myString = string и не сможет вызвать с этим аргументом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2018, 22:46 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Гирлионайльдо, не понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2018, 09:23 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Проблема в том, что Код: pascal 1. не находит нужный метод, хотя он 100% есть у формы: хотя метод PcmdStart объявлен в секции private формы: Код: pascal 1. Снимок сделан после выполнения строки: Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2018, 09:32 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
тут есть похожий пример https://forum.antichat.ru/threads/362046/ но тут даже целый цикл запилили... Ну ОК, я тоже сделал: Код: pascal 1. 2. 3. но вот что странно: Видите, сработала бряка на строке 725, хотя: rmethod.Name = 'Destroy', а BotProcName = 'PcmdStart'. Как так? Может, дело не в бабине? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2018, 10:02 |
|
||
|
Дженерики: передача процедуры в качестве параметра
|
|||
|---|---|---|---|
|
#18+
Если метод не public или published то по умолчанию их в RTTI нет, вроде бы... Из-за в System Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Укажите в том модуле где ваш класс с приватными методами Код: pascal 1. 2. или Код: pascal 1. 2. не помню что переопределяет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2018, 11:49 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39725697&tid=2038887]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
140ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 404ms |

| 0 / 0 |
