Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 июля!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

Функция обработки ошибок электронного оборудования.

 
 Синтаксис          void hardretn(int errcode);
 
 
 
 Файл, содержащий   dos.h
 
 прототип
 
 
 
 Описание           Программа обработки      ошибочных      состояний,
 
                    устанавливаемая   подпрограммой   harderr,   может
 
                    осуществить    возврат    управления    прикладной
 
                    программе с помощью функции hardretn.
 
 
 
                    Программа обработки  прерывания  должна возвращать
 
                    0,  если необходимо игнорировать ошибку,  1,  если
 
                    нужно   повторить  операцию  и  2  для  завершения
 
                    программы.
 
 
 
 Возвращаемое       Нет.
 
 значение
 
 
 
 Переносимость      Функция уникальна для DOS. Функция не совместима с
 
                    Windows.
 
 
 
 Смотрите также     harderr, hardresume.
 
 
 
 Пример:
 
 
 
 /* Эта программа  отслеживает появление ошибок, и запрашивает у
 
    пользователя дальнейшие действия. Для того, чтобы была вызва-
 
    на подпрограмма обработки ошибок, запуская программу, выньте
 
    из дисковода А: диск. */
 
 
 
 #include <stdio.h>
 
 #include <conio.h>
 
 #include <dos.h>
 
 
 
 #define IGNORE 0
 
 #define RETRY  1
 
 #define ABORT  2
 
 
 
 /* определим сообщения об ошибке для дисковода */
 
 static char *err_msg[] = {"диск защищен от записи",
 
                           "неизвестное устройство",
 
                           "дисковод не готов",
 
                           "неизвестная команда",
 
                           "ошибка данных (CRC)",
 
                           "ошибка поиска",
 
                           "неизвестный тип носителя",
 
                           "ненайден сектор",
 
                           "в принтере нет бумаги",
 
                           "сбой при записи",
 
                           "ошибка при чтении",
 
                           "неустранимая ошибка",
 
                           "зарезервирован",
 
                           "зарезервирован",
 
                           "неверная смена диска"
 
                           };
 
 
 
 error_win(char *msg)
 
 {
 
    int retval;
 
    cputs(msg);
 
    /* запрос у пользователя дальнейших действий */
 
    while(1)
 
    {
 
       retval = getch();
 
       if(retval == 'a' || retval == 'A')
 
       {
 
          retval = ABORT;
 
          break;
 
       }
 
       if(retval == 'r' || retval == 'R')
 
       {
 
          retval = RETRY;
 
          break;
 
       }
 
       if(retval == 'i' || retval == 'I')
 
       {
 
          retval = IGNORE;
 
          break;
 
       }
 
    }
 
    return(retval);
 
 }
 
 /* прагма warn -par исключае выдачу предупреждений о том, что
 
 не в подпролграмме не используются параметры errval,bp и si */
 
 #pragma warn -par
 
 
 
 int handler(int errval, int ax, int bp, int si)
 
 {
 
    static char msg[80];
 
    unsigned di;
 
    int drive;
 
    int errno;
 
    di = _DI;
 
 /* если это не ошибка диска, то возникли проблемы у
 
    другого устр-ва */
 
    if(ax<0)
 
    {
 
       /* сообщить об ошибке */
 
       error_win("Ошибка устройства");
 
       /* и вернуть управление программе */
 
       hardretn(ABORT);
 
    }
 
    /* иначе это ошибка диска */
 
    drive = ax&0x00ff;
 
    errno = di & 0xff;
 
    /* сообщить, что за ошибка */
 
    sprintf(msg,"Ошибка: %s на дисководе %c\r\nA)bort, R)etry,
 
                I)gnore:",err_msg[errno],'A'+drive);
 
    /* вернуть управление программе */
 
    hardresume(error_win(msg));
 
    return ABORT;
 
 }
 
 #pragma warn +par
 
 
 
 int main(void)
 
 {
 
    /* установить программу обработки прерывания */
 
    harderr(handler);
 
    printf("Make sure there is no disk in drive A:\n");
 
    printf("Press a key when ready...\n");
 
    getch();
 
    printf("Attempting to access A:\n);
 
    fopen("A:ANY.FIL","r");
 
    return 0;
 
 }


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS