![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Aster!x |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 7.8.2004 Репутация: нет Всего: нет |
Как этот код будет выглядеть на Delphi?
Естественно без использования asm вставок. EXCEPTION_DISPOSITION __cdecl _except_handler( struct _EXCEPTION_RECORD *ExceptionRecord, void * EstablisherFrame, struct _CONTEXT *ContextRecord, void * DispatcherContext ) { ContextRecord->Eip = seh.SafeEip; ContextRecord->Esp = seh.PrevEsp; ContextRecord->Ebp = seh.PrevEbp; // Tell the OS to restart the faulting instruction return ExceptionContinueExecution; } |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Примерно так, тебе остается лишь выяснить что есть EXCEPTION_DISPOSITION и ExceptionContinueExecution:
Это сообщение отредактировал(а) <Spawn> - 13.10.2004, 12:51 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Aster!x |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 7.8.2004 Репутация: нет Всего: нет |
<Spawn>
Спасибо, всё получилось, а то я сначала запутался в этих поинтерах %) |
|||
|
||||
| Aster!x |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 7.8.2004 Репутация: нет Всего: нет |
p0s0l
А вот если использовать этот enum что-то не получается, вот такой код генерит компилятор:
Как бы ему указать что нужно DWORD возвращать? |
|||
|
||||
| p0s0l |
|
||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Переопредели тип так:
Добавлено @ 15:29 Или так:
-------------------- С уважением, г-н Посол. |
||||
|
|||||
| Aster!x |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 7.8.2004 Репутация: нет Всего: нет |
Да уж, Дельфи есть Дельфи, никакой гибкости
теперь код генерится такой:
Эти строчки явно лишние :-)
Это сообщение отредактировал(а) Aster!x - 13.10.2004, 15:48 |
||||
|
|||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Может у тебя оптимизация вырублена ? Посмотри Project->Options->Compiler...
У меня нормально без этих строк компилится... И какая у тебя Delphi ? Иначе, если уж для тебя эти лишние пары тактов критичны, то пиши процедуру полностью asm-вставкой... -------------------- С уважением, г-н Посол. |
|||
|
||||
| Aster!x |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 7.8.2004 Репутация: нет Всего: нет |
p0s0l
Да, ты прав, оптимизация отключена, иначе компилятор не даёт два раза присвоить переменную, удаляет первое присваивание из кода:
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Можешь в нужных местах отрубать оптимизацию, а потом включать:
{$O-} и {$O+} Только учти, что можно включить/выключать оптимизацию целых функций/процедур, а не отдельных команд... То бишь делай так:
PS: а зачем тебе там первое присваивание ? Это сообщение отредактировал(а) p0s0l - 13.10.2004, 17:17 -------------------- С уважением, г-н Посол. |
|||
|
||||
| Aster!x |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 7.8.2004 Репутация: нет Всего: нет |
Во, и компилятор тоже видимо не понимает Если SEH не сработал то в MessageBox попадёт второе присваивание, иначе первое. Спасибо за совет, про оптимизацию теперь понял. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |