|
|
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
Какие есть реализации проверки объекта на класс и объект ? Безопастно, без приведения каждого к разной реализации TClass и TObject что бы не падало, когда туда что - то не того попадёт(...?) Я пока полазил по исходникам и есть подозрения, что это можно как то сделать черех vmt Но не уверен пока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 13:48 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
Есть мнение, что хороший программист должен точно знать что делает его программа, тогда класс каждого объекта будет заранее известен и проверять его не придётся. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 13:54 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Твоя правда. Ну а теперь моя: Как обучить других будущих пользователей, что цифорки от цвета или (Мёртвого уже компонента) Нельзя пихать в принимающий живой класс или объект? А проверка на сооствествие класса не сработает, через InheritsFrom потому что у нас вывалится ошибка И что теперь? Нам совсем не делать проверки внашей программе, раз хороший программист знает что он делает, но не знает что с его программой будут делать на . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 14:08 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
Я был прав насчёт VMT как оказывается, нашёл описание такой структуры https://github.com/tsvtitan/stbasis/blob/cd9889f3c7a1e116fb42b219b9023c4f40e4aca6/Source/DesignTsv/RARTTI.pas#L71 Объявил длян её Код: pascal 1. 2. И объвил переменную PVMT начав сувать в неё циферки, ошибки перестали вываливатся. И есть адеватная возможность понять что это Увы - мёртвый класс не проверяет, так что если пользователь сохранил куда то дубликатик живой, клонировав объект. Я не смогу удалить в нём уже будучи мёртвий адресс созданного компонента, и вывалится ошибка. Но всё же это лучше чем сидеть с ошибкой к обращению от цвета ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 14:21 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоУвы - мёртвый класс не проверяет, так что если пользователь сохранил куда то дубликатик живой, клонировав объект. Я не смогу удалить в нём уже будучи мёртвий адресс созданного компонента, и вывалится ошибка. Если вы отдаёте куда-то налево объекты с неизвестным временем жизни, то интерфейсы вам в руки: счётчик ссылок рулит. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 14:40 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоКакие есть реализации проверки объекта на класс и объект ? В JclSysUtils есть такое (работу не проверял): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 16:47 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
Aniskin, Да.. Я пробовал эту реализации... Они падали к сожелению.... VMT единственное решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 16:53 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
А вот такие реализации работают на ура Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 16:58 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоКакие есть реализации проверки объекта на класс и объект ? Безопастно, без приведения каждого к разной реализации TClass и TObject что бы не падало, когда туда что - то не того попадёт(...?) Я пока полазил по исходникам и есть подозрения, что это можно как то сделать черех vmt Но не уверен пока. Пользователи это другие разработчики использующие ваш код? Если они туда будут сувать не то, что в документации, то метлу им в руки и улицы мести... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 18:54 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
X-Cite, Но всё же надо вывести им сообщение о том - что вы неправильно даёте то, что мы принимаем. А то, придут в магазин и перед ними дверь сразу закроют. Потому что у них доллары, а у насс ССР с рублями. И ничего не сказали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 19:27 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
Гирлионайльдо, Код: pascal 1. 2. 3. 4. Но это не надёжный способ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 20:27 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
Гирлионайльдо, Можно пользователям отдавать не объекты, а хендлы к ним. Тогда можно формировать ошибки "объект не того типа", "объект не существует" и пр., но это потребует некой переделки API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 23:11 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоX-Cite, Но всё же надо вывести им сообщение о том - что вы неправильно даёте то, что мы принимаем. Код: pascal 1. 2. 3. 4. Project Project1.exe raised exception class $C0000005 with message 'access violation at 0x771723e4: write of address 0x00000221'. Вполне себе адекватная ошибка и реакция на "руки из жопы".... ГирлионайльдоА то, придут в магазин и перед ними дверь сразу закроют. Потому что у них доллары, а у насс ССР с рублями. И ничего не сказали Вы отдаете что-то без документации?? Школьники будут пользоваться или адекватные разработчики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 01:32 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
Если я буду писать документацию, то только по использованию фишек. Ибо написать документацию по VCL и прочему, будет невозможно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 03:02 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
x1ca4064Гирлионайльдо, Можно пользователям отдавать не объекты, а хендлы к ним. Тогда можно формировать ошибки "объект не того типа", "объект не существует" и пр., но это потребует некой переделки API. Да вот как раз когда я додумался, было уже поздно. Есть как минимум 4 метода, где нужно вносить правки, а ещё в создание процедур и функций в PHP тоже завязаны на этом, придётся переписывать. Так что закину на чёрный ящик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 03:04 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
Гирлионайльдовот такие реализации работают на уранапример в мадыксепте IsValidObjectEx весит около 150 строк и предлагает 5 параметров ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 18:30 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
Чудеса ... Если есть свой прирученный менеджер памяти, то тожно у него спросить, что находится по этому адресу. FastMM с FullDebugMode еще может сказать, иначе - нет. Ты бы смог сказать, кто сидел в кинотеатре, по остаточной температуре сиденья ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2018, 23:58 |
|
||
|
Безопастная проверка на объект или класс
|
|||
|---|---|---|---|
|
#18+
Гирлионайльдо, RTTI механизм можно рассмотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2018, 13:59 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39634160&tid=2040973]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
200ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 579ms |

| 0 / 0 |
