Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: CL | DM;

Вниз

соглашение о передаче параметров   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.068 c
11-1134201796
Vano12
2005-12-10 11:03
2006.10.08
Помогите-Я сделал авторан на диск в Delphi мне надо чтобы кнопка


15-1158474454
ramor
2006-09-17 10:27
2006.10.08
Модуль программиста в Delphi


2-1158411255
greengeneral
2006-09-16 16:54
2006.10.08
Как ограничть вводимые цифры в Edit1


3-1154862962
serko
2006-08-06 15:16
2006.10.08
Найти далее и др.


15-1157466115
Igor_thief
2006-09-05 18:21
2006.10.08
Нужен компонент наподобие TTrackBar