Форум: "Прочее";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];
Внизсоглашение о передаче параметров Найти похожие ветки
← →
Stexen © (2006-09-18 10:05) [0]Тут проблемма одна возникла, нашелся способ но ниочень, имхо,
вообщем допустим есть последовательность процедур main, a2,a3, a4, a5...procedure main();
begin
a2();
@@a_1:
какие то действия
выход из процедуры
end;
Процедура a2 вызывает a3, a3 ->a4, a4->a5 и тд.
Вообще каждая процедура знает адресс @@a_1, но незнает из какой процедуры вызывалась, и допустим на каком то моменте в какой то из процедур происходит ошибка(пользовательская(например файл не найден или еще что-то)), нужно не возвращаясь в предыдущие процедуры сразу прыгнуть в @@a_1.
Вот но в таком случае возникает что в стэке хранится что попало, и могут произойти различные ошибки.
Затем я подумал, что можно в стэк перед вызовом процедуры из main пихать какую нибудь подпись например 16 байтную. а на точке @@a_1 попить до тех пор пока не достану все до подписи включительно.Вроде бы должно работать, но мне кажется что я что-то мог забыть!!!??????
Не подскажите какие возможны баги в данной ситуации, кроме совпадения подписи...
← →
Курдль © (2006-09-18 10:07) [1]
> Затем я подумал, что можно ...
Лучше на пару-тройку месяцев отсесть от компа и почитать книжки по программированию.
← →
Rouse_ © (2006-09-18 10:14) [2]SEH все сделает за тебя, главное лови выход в первой процедуре, куда вернуться хочешь.
← →
Stexen © (2006-09-18 10:18) [3]
> SEH все сделает за тебя
Где от видел про это, но не помню как и что, можешь по подробнее описать или скинуть где почитать....
← →
Stexen © (2006-09-18 10:19) [4]
> Stexen © (18.09.06 10:18) [3]
а это про ислючения?
← →
Юрий Зотов © (2006-09-18 10:21) [5]> Stexen © (18.09.06 10:05)
procedure main();
begin
try
a2();
except
какие то действия
end
end;
А в процедурх a2, a3, a4, a5 и т.д. нужно просто возбудить исключение.
← →
Stexen © (2006-09-18 10:22) [6]
> SEH все сделает за тебя
Так если например сделать так и вызввать деление на ноль он прыгнет на точку которую я пушил, а стэк этот метод очистит?
← →
Stexen © (2006-09-18 10:25) [7]
> А в процедурх a2, a3, a4, a5 и т.д. нужно просто возбудить
> исключение
отлично, что то туплю...
> Лучше на пару-тройку месяцев отсесть от компа и почитать
> книжки по программированию
Ты прав :))))))
← →
Rouse_ © (2006-09-18 12:12) [8]Угу, SEH - structured exception handling
← →
evvcom © (2006-09-19 08:44) [9]А при чем здесь "соглашение о передаче параметров"?
← →
Anatoly Podgoretsky © (2006-09-19 09:12) [10]
> А при чем здесь "соглашение о передаче параметров"?
Может на что сгодится
← →
Stexen © (2006-09-19 09:55) [11]
> А при чем здесь "соглашение о передаче параметров"?
Ну изначально хотел самостоятельно стэк чистить, вот и хотел узнать что там говорится поподробнее, а то забыл, а вообще оно по-моему называется соглашение о связи. Почему связи не понимаю, наверное связи между подпрограммами
← →
Anatoly Podgoretsky © (2006-09-19 10:00) [12]
> а вообще оно по-моему называется соглашение о связи.
Больше не читай книги этих переводчиков.
← →
Stexen © (2006-09-19 10:01) [13]
> Больше не читай книги этих переводчиков
:)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.051 c