Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2017, 18:23   #21
Shahimat
Пользователь
 
Регистрация: 05.12.2015
Сообщений: 27
По умолчанию

а отдельный поток не подходит по той причине, что в рамках some2 у меня бесконечный цикл с перебором массива, так вот, в этом случае необходимо в нужный момент отрубить поток, чтобы перебор не вылез за рамки массива, а это либо весьма сложно, либо трудозатратно с точки зрения скорости (либо проверяй где находится текущее положение бегунка ifthen, либо другими ненадежными способами).
Потоки я хочу использовать в проге, уже поверх some2, так-что тоже не то
Shahimat вне форума Ответить с цитированием
Старый 02.08.2017, 18:38   #22
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 273
По умолчанию

Если добавить Abort в процедуру some1?
Код:
procedure some1;
begin
  ShowMessage('2');
  Abort; // <-- добавить
end;

procedure some2;
begin
  ShowMessage('1');
  some1;
  ShowMessage('3'); // <-- не выполнится
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  some2;
end;
Цитата:
Сообщение от Shahimat Посмотреть сообщение
В третьих, я делаю отдельный модуль, который не связан с SysUtils в котором сидит Exception.
Тогда не пойдёт...

Последний раз редактировалось Filka; 02.08.2017 в 18:50.
Filka вне форума Ответить с цитированием
Старый 02.08.2017, 18:49   #23
Shahimat
Пользователь
 
Регистрация: 05.12.2015
Сообщений: 27
По умолчанию

Filka, я попробовал использовать эту идею, вообщем действительно abort крашит some2, но вот проблема возникает - abort кроме краша some2 крашит и все остальное( грубо говоря some2 - это основная мат.процедура расчета, которая подключается к остальной проге, так вот вся та прога тоже рубится... если есть возможность остановить краш на some2, то будет очень круто.
Вот что получается:
Код:
procedure some1;
begin
 ShowMessage('2');
 Abort; // <-- добавить
end;

procedure some2;
begin
 ShowMessage('1');
 some1;
 ShowMessage('3'); // <-- не выполнится
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 some2;
 ShowMessage('4'); // <-- не выполнится (((((
end;
Shahimat вне форума Ответить с цитированием
Старый 02.08.2017, 19:07   #24
Shahimat
Пользователь
 
Регистрация: 05.12.2015
Сообщений: 27
По умолчанию

Да, Abort работает еще и в SysUtils(
Еще вариант есть добавить некую глобальную метку Label, но у меня это не получилось не в какую, может что-то наподобие этого если
Shahimat вне форума Ответить с цитированием
Старый 02.08.2017, 19:36   #25
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так он ж просто исключение кидает.
Код:
{ Raise abort exception }

procedure Abort;

  function ReturnAddr: Pointer;
  asm
          MOV     EAX,[EBP + 4]
  end;

begin
  raise EAbort.CreateRes(@SOperationAborted) at ReturnAddr;
end;
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.08.2017, 19:58   #26
Shahimat
Пользователь
 
Регистрация: 05.12.2015
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Так он ж просто исключение кидает.
Код:
{ Raise abort exception }

procedure Abort;

  function ReturnAddr: Pointer;
  asm
          MOV     EAX,[EBP + 4]
  end;

begin
  raise EAbort.CreateRes(@SOperationAborted) at ReturnAddr;
end;
ну да, он не подходит
нужны еще варианты...
Shahimat вне форума Ответить с цитированием
Старый 03.08.2017, 02:54   #27
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

2 Shahimat
Волшебные палочки существуют только в сказках. Но вы можете написать свою волшебную палочку, если осилите ответ p51x №18.
Если не осилите, тогда забудьте о этом своём пожелании!
northener вне форума Ответить с цитированием
Старый 03.08.2017, 12:41   #28
Shahimat
Пользователь
 
Регистрация: 05.12.2015
Сообщений: 27
По умолчанию

northener, спасибо за конструктив, удачи вам в Хогвартсе
Shahimat вне форума Ответить с цитированием
Старый 04.08.2017, 01:43   #29
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от Shahimat Посмотреть сообщение
northener, спасибо за конструктив, удачи вам в Хогвартсе
Да не за что.
А удачу в Хогвардсе я давно уже получил.
Но ваше пожелание - это пожелание типичного троешника. Который конечно "слышал где-то ранее некий звон" (возможно даже писал что-то, используя надыбанный в И-нете код), но не знает, где его слышал и о чём тот звон был.
northener вне форума Ответить с цитированием
Старый 04.08.2017, 12:02   #30
Shahimat
Пользователь
 
Регистрация: 05.12.2015
Сообщений: 27
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Да не за что.
А удачу в Хогвардсе я давно уже получил.
Но ваше пожелание - это пожелание типичного троешника. Который конечно "слышал где-то ранее некий звон" (возможно даже писал что-то, используя надыбанный в И-нете код), но не знает, где его слышал и о чём тот звон был.
Я здесь не для того, чтобы выслушивать ваши нотации. Не знаете или не хотите делиться информацией - не пишите. Хватит засорять ленту сообщений.
Shahimat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача одной процедуры другой в качестве входящего параметра ProRockX Общие вопросы Delphi 2 02.10.2015 11:32
Не могу найти контрол из одной процедуры в другой ChoKavo C# (си шарп) 1 18.10.2014 13:34
Использование имени процедуры в качестве параметра другой процедуры Alexey355 Помощь студентам 1 23.04.2011 13:59
Вызов одной процедуры из другой artemavd Общие вопросы Delphi 11 26.11.2010 17:37
Ошибка вызова одной процедуры в другой! $T@LKER БД в Delphi 4 28.04.2010 19:50