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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2007, 13:39   #1
Serviceprofi
 
Регистрация: 16.11.2007
Сообщений: 5
По умолчанию Обработка ошибок.

Здравствуйте.
у меня такая проблемка:
при вводе заведомо неверных данных получаю exception
пишу

Код:
try
 asm
  call func
 end;
finally
showmessage("не верный формат");
или

Код:
try
 asm
  call func
 end;
except  on EAccessViolation do
 showmessage("не верный формат");
в итоге всеравно получаю исключение EAccessViolation

что я делаю не так? подскажите пожалуйста.

Последний раз редактировалось Serviceprofi; 16.11.2007 в 13:41.
Serviceprofi вне форума Ответить с цитированием
Старый 16.11.2007, 13:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Finally выполнится в любом случае, произошла ошибка или нет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2007, 13:48   #3
Serviceprofi
 
Регистрация: 16.11.2007
Сообщений: 5
По умолчанию

не успевает, после исключения винда прибивает прогу.
я бы хотел чтоб сообщение винды не выводилось, а ошибку я бы обработал и
отправил прогу работать дальше.
Serviceprofi вне форума Ответить с цитированием
Старый 16.11.2007, 13:59   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот у меня так:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  f=function():boolean;

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var      func:f;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
 asm
  call func
 end;
except  on EAccessViolation do
 showmessage('Нильзяяяя');

end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
func:=pointer(0);
end;

end.
Пишет мол "Нильзяяяя".
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2007, 14:01   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Serviceprofi Посмотреть сообщение
не успевает, после исключения винда прибивает прогу.
я бы хотел чтоб сообщение винды не выводилось, а ошибку я бы обработал и
отправил прогу работать дальше.
TRY...EXCEPT вовнутрь CALL FUNC.
При запуске из-под Дельфи EXEPTION будет всегда видна, а при самостоятельном запуске - обработается, как надо.
mihali4 вне форума Ответить с цитированием
Старый 16.11.2007, 14:10   #6
Serviceprofi
 
Регистрация: 16.11.2007
Сообщений: 5
По умолчанию

Stilet Пишет мол "Нильзяяяя".
у меня при вводе неверных данных call уходит в неизвестном направлении.

mihali TRY...EXCEPT вовнутрь CALL FUNC

ок попробую.

Последний раз редактировалось Serviceprofi; 16.11.2007 в 14:15.
Serviceprofi вне форума Ответить с цитированием
Старый 16.11.2007, 14:13   #7
Serviceprofi
 
Регистрация: 16.11.2007
Сообщений: 5
По умолчанию

mihali TRY...EXCEPT вовнутрь CALL FUNC

хотя нет, в моем случае не получится.
у меня при вводе неверных данных call уходит в неизвестном направлении.
а значит func просто не начнет выполняться.
Serviceprofi вне форума Ответить с цитированием
Старый 19.11.2007, 15:12   #8
Serviceprofi
 
Регистрация: 16.11.2007
Сообщений: 5
По умолчанию

Расскажу поподробнее.
Это для защиты от нежелательного доступа.
Поль-ль вводит пароль, который генерируется из его имени + зашифрованный адрес процедуры + ключ.
при вводе пароля после проверки пользователя, расшифровывается адрес, и сама процедура. Которая в свою очередь расшифровывает некоторые данные.

Так вот, при вводе неверного пароля, адрес процедуры неправильный и
прога пытается выполнить неизвестно что. Может даже не в своём адресном пространстве.

Подскажите как правильно обработать такое.
Serviceprofi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка ошибок Ivanich JavaScript, Ajax 1 24.04.2008 22:49
Обработчик ошибок XPAiN Microsoft Office Excel 3 21.04.2008 09:30
Обработчик ошибок. Dj_smart Общие вопросы Delphi 17 30.03.2008 11:58
Обработка ошибок в Delphi 7 Наташкин БД в Delphi 3 21.12.2007 22:07
обнаружение ошибок makar575 Фриланс 3 18.12.2007 07:56