|
|
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
Delphi XE, win 7x64. Прекрасно работающий несколько лет назад код, вдруг стал выдавать AV Project xxx.exe raised exception class EAccessViolation with message 'Access violation at address 00409230 in module 'xxx.exe'. Read of address CC8B1287'. Сокращенный до воспроизводимого минимума код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Что не так? Скрин с callstack: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 10:01 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
LiYing, А так? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Завязывайте уже с локальными коллбэками, да ещё и с обращением к внешним переменным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 10:16 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
alekcvp А так? Так работает, спасибо! Завязываю... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 10:34 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
Странно, что вообще давал такое провернуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 10:37 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
Василий 2 Странно, что вообще давал такое провернуть. Чесслово, работало! На этом же компе, с этой же виндой и делфи. Проект тот не компилил года 2-3, а тут достал внести маленькое изменение, а оно AV стало выдавать... может обнова винды какая сыграла роль, ибо все остальное осталось прежним.. ну да ладно, переделаю уже "по-взрослому" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 10:43 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
LiYing Чесслово, работало! Небось, с глобальными объектами работала enum процедурка, или в контексте объекта, адрес которой передавался во втором параметре, а ты в лоб локальный добавил, или вообще поле объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 10:58 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
ёёёёё, да нет же! Просто попытался скомпилировать старый проект, ранее 100% рабочий, а тут AV... ничего не менял вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 11:02 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
ёёёёё LiYing Чесслово, работало! Небось, с глобальными объектами работала enum процедурка, или в контексте объекта, адрес которой передавался во втором параметре, а ты в лоб локальный добавил, или вообще поле объекта. В тот раз просто так регистры сошлись... а в этот не сошлись Тут гулял по инету модуль Base64, где автор в ассемблерной процедуре вместо EDX считывал второй параметр из EBX - и ничего, в 9 их 10 случае работало... почему-то :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 11:17 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
LiYing, подтянуть матчасть можно тут: https://www.gunsmoker.ru/2015/04/task-18-1.html https://www.gunsmoker.ru/2015/04/task-18.html https://www.gunsmoker.ru/2015/04/task-18-3.html https://www.gunsmoker.ru/2015/05/task-18-answer.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 13:29 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
GunSmoker, Вот спасибо, очень познавательно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 13:40 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
LiYing, Не используйте операцию взятия адреса от функции/метода и компилятор не даст вам писать лажу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 15:36 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ LiYing, Не используйте операцию взятия адреса от функции/метода и компилятор не даст вам писать лажу А как еще winapi вызывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 17:08 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
Василий 2 А как еще winapi вызывать? Код: pascal 1. 2. 3. замечательно работает. И даже такой Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 21:10 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, у тебя что за заголовочники? Просто в Delphi RTL объявлено так: Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2019, 22:01 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
GunSmoker у тебя что за заголовочники? Просто в Delphi RTL объявлено так: Или попробовать завести тикет в QC. Хотя мои тикеты с ошибками импорта висят уже полтора года, а тут простое удобство... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2019, 16:05 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Вот такой код Код: pascal 1. 2. 3. замечательно работает. Так подобное объявление тоже пропустит локальную функцию, разве нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2019, 10:20 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
Василий 2 _Vasilisk_ Вот такой код Код: pascal 1. 2. 3. замечательно работает. Так подобное объявление тоже пропустит локальную функцию, разве нет? Если параметр EnumProc объявлен как процедурный тип, а не указатель, то нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2019, 10:36 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
Да, действительно. Но вряд ли это будут исправлять. Вон, попытались спрятать страшные указатели в OUT-параметрах от неофитов, заменив их на var. В итоге возможность передать туда nil без мусорной переменной затруднена, в некоторых местах без указателей все равно не обойтись, соответственно теперь два равноправных стандарта трансляции api функций, и никто не знает, какому из них следовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2019, 11:54 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
Василий 2 теперь два равноправных стандарта трансляции api функций, и никто не знает, какому из них следовать. А ведь логично было бы параметры, допускающие nil, передавать через указатели, а обязательные - через var. И всегда было бы понятно, какие обязательные, а какие - нет. Но это ведь так сложна! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2019, 19:10 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
Василий 2 В итоге возможность передать туда nil без мусорной переменной затруднена Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2019, 19:58 |
|
||
|
Перестал работать ранее рабочий код
|
|||
|---|---|---|---|
|
#18+
alekcvp Василий 2 теперь два равноправных стандарта трансляции api функций, и никто не знает, какому из них следовать. А ведь логично было бы параметры, допускающие nil, передавать через указатели, а обязательные - через var. И всегда было бы понятно, какие обязательные, а какие - нет. Но это ведь так сложна! Хорошая мысля приходит... как всегда _Vasilisk_ Василий 2 В итоге возможность передать туда nil без мусорной переменной затруднена Код: pascal 1. Знаю, потому и написал, что не невозможна, а затруднена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2019, 10:29 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39905978&tid=2038739]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
145ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 428ms |

| 0 / 0 |
