На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Игнор ошибок
    Вот в VB есть такое:
    ExpandedWrap disabled
      On Error Resume Next

    и ВСЕ последующие ошибки игнорируются..
    В Delphi часом такого нету?
      ExpandedWrap disabled
        unit Unit1;
         
        interface
         
        uses
          Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
          Dialogs, StdCtrls;
         
        type
          TForm1 = class(TForm)
            Button1: TButton;
            procedure FormCreate(Sender: TObject);
            procedure Button1Click(Sender: TObject);
          private
            { Private declarations }
          public
            procedure AppException(Sender: TObject; E: Exception);
          end;
         
        var
          Form1: TForm1;
         
        implementation
         
        {$R *.dfm}
        procedure TForm1.AppException(Sender: TObject; E: Exception);
        begin
          ShowMessage(E.Message);
        end;
         
        procedure TForm1.FormCreate(Sender: TObject);
        begin
          Application.OnException :=AppException;
        end;
         
        procedure TForm1.Button1Click(Sender: TObject);
        var
          i: integer;
          j: Integer;
        begin
          i := 0;
          j := 1;
          ShowMessage(FloatToStr(j/i));
        end;
         
        end.
        Цитата uk- @
        и ВСЕ последующие ошибки игнорируются..

        Что значит "игнорируются" ??

        ExpandedWrap disabled
          On Error Resume Next
          <First_VB_Statement>
          <Second_VB_Statement>

        И если в <First_VB_Statement> возникнет исключение, то <Second_VB_Statement> всё равно выполнится ?? Так что ли?? В дельфи такое поведение можно эмулировать только обрамив каждый оператор в try except end
          Демо сенкс

          Добавлено
          jack128 я не понял про что ты.. :whistle:
            uk- Использование структуры
            ExpandedWrap disabled
              try
                {Список операторов}
              except
                {Если была ошибка}
                {Генерировать сообщение об ошибке?}
              end;


            эта структура позволяет отлавливать большинство ошибок, если в секции except ничего не написать, то сообщение об ошибке появляться не будет!
              glengine честно - ты первое сообщение ПРОЧИТАЛ??? <_<

              Добавлено
              Объясню подробнее если дело в этом..
              Вот у меня процедура где в строке №3 и №5 ошибки:
              ExpandedWrap disabled
                Строка №1
                Строка №2
                Строка №3 // Тута
                Строка №4
                Строка №5 // Тута
                Строка №6

              Если я в VB сделаю так:
              ExpandedWrap disabled
                On Error Resume Next
                Строка №1
                Строка №2
                Строка №3 // Тута
                Строка №4
                Строка №5 // Тута
                Строка №6

              То И №3 и №5 просто пропустяться, а код будет выполнятся следующий дальше..
              А в каждой строке ставить try except end?
                Цитата uk- @
                А в каждой строке ставить try except end?

                в дельфи - да.

                Но вообще смысл подобного, зачем это нужно?
                  Цитата jack128 @
                  Цитата uk- @
                  А в каждой строке ставить try except end?

                  в дельфи - да.

                  Но вообще смысл подобного, зачем это нужно?

                  Странно.. А код Демо ?? (я просто не проверял)
                    Цитата uk- @
                    А код Демо ??

                    просто гасит сообщение об ошибке и выводит своё идентичное: ShowMessage(E.Message);
                    НО, код, расположенный за местом ошибки не выполнится
                    Сообщение отредактировано: Scorpy -
                      Цитата uk- @
                      Странно.. А код Демо ?? (я просто не проверял)


                      Видимо, я сразу не так понял, что тебе нужно.
                      Приведенный мною код обрабатывает исключение, возникшее практически в любом месте программы. но, увы, не позволит продолжить программу за опереатором, вызвавшим исключение. В Delphi такое невозможно.
                        Ладно.. :( Спасибо всем!
                        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0.0829 ]   [ 15 queries used ]   [ Generated: 27.04.26, 08:20 GMT ]