Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/64: Рейтинг темы: голосов - 64, средняя оценка - 4.77
 Аватар для Soniyagfto
60 / 67 / 37
Регистрация: 29.01.2013
Сообщений: 374
Записей в блоге: 1

Перехват ошибок try-catch

16.01.2014, 20:13. Показов 13622. Ответов 19

Студворк — интернет-сервис помощи студентам
В общем, нужно перехватить ошибки, через try-catch, как я понимаю, в моем случае, ошибка возможна при вводе не правильного параметра строки (Пути директории).
Знаю, что нужно сделать через try-catch, но никогда его не использовал.
Если не трудно, подскажите пожалуйста, вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Diagnostics;
 
namespace Files
{
    class Program
    {
        static string way = null;
        static void Main(string[] args)
        {
                #region Путь к каталогу
                for (int k = 0; k < args.Length; k++)
                {
                    //Меню выбора.
                    string enter = args[k];
                    switch (enter.ToLower())
                    {
                        case "way":
                        case "/way":
                            {
                                way = args[k + 1]; // Входной параметр (Путь к директории)
                                break;
                            }
                    }
                }
                #endregion
                
                    if (!Directory.Exists(way + @"\")) // Проверяем, существует ли данный каталог
                    {
                        Directory.CreateDirectory(way + @"\"); // если нет, то создаем его.
                        if (!File.Exists(way + @"\information.txt")) // Проверяем, существует ли данный файл
                        {
                            File.CreateText(way + @"\information.txt"); // Если нет, то создаем его
                        }
                    }
                    string[] files1 = Directory.GetFiles(way + @"\"); // список всех файлов в директории 
                    string s = "";
                    StreamWriter info = new StreamWriter(way + @"\information.txt"); // Поток, для чтения и записи информации
                    info.WriteLine("Список файлов, найденых в данной директории:"); // Записываем в лог-файл (1)
                    for (int j = 0; j < files1.Length; j++)
                    {
                        info.WriteLine(string.Format("{0}:{1}", j + 1, files1[j])); // Записываем в лог-файл (2)
                    }
                    for (int i = 0; i < files1.Length; i++)
                    {
                        s = Path.GetFileNameWithoutExtension(files1[i]); // Присваиваем переменной значение имени [i]-го файла
                        if (!Directory.Exists(way + @"\" + s)) // Проверяем, существует ли данный каталог
                        {
                            Directory.CreateDirectory(way + @"\" + s); // если нет, то создаем его.
                            info.WriteLine(string.Format("Создание каталога {0}", s)); // Записываем в лог-файл (3)
                        }
                        else
                        {
                            info.WriteLine(string.Format("Попытка Создания каталога {0}. Каталог небыл создан, т.к. уже существует", s)); // Записываем в лог-файл (4)
                        }
 
                    }
                    info.WriteLine("--------------------------------------------"); // Записываем в лог-файл (5)
                    info.Close(); // Закрываем лог-файл.              
            Console.WriteLine (string.Format("Обработка данных успешно завершена, пожалуйста, проследуйте в директорию {0}, для завершения программы, нажмите любую клавишу",way+@"\"));
            Console.ReadKey();
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.01.2014, 20:13
Ответы с готовыми решениями:

Обработка ошибок try catch
Как сделать, что бы не показывало, саму ошибку? Сейчас показывает Warning: mkdir(): Not a directory try { if(!$userPath...

Обработчики ошибок try catch
Друзья, вот есть задача у меня решенная, вот условие: Справка о междугороднем телефонном разговоре содержит: номер телефона абонента (6...

Catch() обработка определенных ошибок.
Мне надо сделать так, если в программе у меня происходит определенная ошибка, то мне надо сделать какое-то действие.Но проблема в том что я...

19
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
16.01.2014, 22:05
Soniyagfto,
1) коментирование каждой строки - без комментариев... Каламбур, однако
2) что собственно хотите? Синтаксис try catch в любом справочнике есть, понимание где его применить, судя по коду, имеется, в чем проблема?
0
 Аватар для Soniyagfto
60 / 67 / 37
Регистрация: 29.01.2013
Сообщений: 374
Записей в блоге: 1
16.01.2014, 23:08  [ТС]
В том, что я не понимаю, как работает catch в данных реалиях, точнее как он должен работать.
0
50 / 49 / 41
Регистрация: 17.12.2013
Сообщений: 101
16.01.2014, 23:32
Описание из книги
Кликните здесь для просмотра всего текста
Существуют специальные ключевые слова, позволяющие по-
мечать участки кода как участки, в которых допустима обработка исключительных
ситуаций, и размещать инструкции, указывающие, что следует делать при возник-
новении исключительной ситуации. Для этих целей используются три ключевых
слова: try, catch и finally. Каждому из них соответствует некоторый блок кода,
и все они должны помещаться в последовательно расположенных строках кода.
Основная конструкция имеет следующий вид:
C#
1
2
3
4
5
6
7
8
9
10
11
12
try
{
...
}
catch(<тип исключительной ситуации> е)
{
...
}
finally
{
....
}
Существует также возможность использовать блоки try и finally без блока
catch, а также блок try с несколькими блоками catch. Если имеется один или
несколько блоков catch, то блок finally является необязательным, в противном
случае он обязателен.
Эти блоки используются следующим образом:
• try содержит код, который может привести к возникновению
исключительной ситуации.
• catch содержит код, который должен выполняться в случае
возникновения исключительной ситуации. Блоки catch могут быть
настроены таким образом, чтобы реагировать только на один
конкретный тип исключительной ситуации (например, на
System. IndexOutOfRangeException), ДЛЯ чего ИСПОЛЬЗуетсЯ параметр
<тилисключительнойСитуации>, поскольку существует возможность
одновременно установить несколько блоков catch. Но можно и вообще
опустить этот параметр, тогда получится общий блок catch, который
будет реагировать на все виды исключительных ситуаций.
• finally содержит блок кода, который выполняется всегда: либо после
выполнения блока try, если не возникло никаких исключительных
ситуаций, либо после блока catch, если производилась обработка
исключительной ситуации, либо непосредственно перед тем, как
приложение будет завершено из-за возникновения необрабатываемой
исключительной ситуации (последнее и объясняет необходимость
этого блока; в противном случае мы могли бы с тем же успехом
разместить этот код просто вслед за блоком).
События, происходящие после возникновения исключительной ситуации в бло-
ке кода try, имеют такую последовательность:
• Выполнение блока try прекращается в той точке,
в которой возникла исключительная ситуация.
• Если существует блок catch, то производится проверка
на предмет того, совпадает ли его параметр с типом возникшей
исключительной ситуации. Если блок catch отсутствует,
то выполняется блок finally (который в этом случае
является обязательным).
• Если блок catch существует, но значение его параметра
не совпадает с типом возникшей исключительной ситуации,
проверка производится в других блоках catch.
• Если параметр блока catch совпадает с типом возникшей
исключительной ситуации, то сначала выполняется код,
содержащийся в блоке, а затем — в случае, если он присутствует,—
ВЫПОЛНЯеТСЯ блок finally.
• Если ни один из блоков catch не соответствует типу возникшей
исключительной ситуации, то выполняется блок finally
(если он существует).

Вот когда то писал, наглядно как работает в программе
Кликните здесь для просмотра всего текста

Программа считывает текст из файла test.txt
И выводит на консоль цитаты из текста, т.е. фразы заключенные в двойные кавычки.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace Cytaty_from_file
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                FileStream fs = new FileStream("test.txt", FileMode.Open);
                StreamReader sr = new StreamReader(fs);
                string s = sr.ReadToEnd();
                bool flag = false;
 
                for (int i = 0; i < s.Length - 1; i++)
                {
                    if (((s[i] == ' ') || (s[i] == '\n')) && (s[i + 1] == '\"'))
                        flag = true;
                    if (flag)
                        Console.Write(s[i]);
                    if (((s[i + 1] == ' ') || (s[i + 1] == '\n')) && (s[i] == '\"'))
                        flag = false;
                }
 
                sr.Close();
                fs.Close();
            }
            catch(Exception e) 
            {
                Console.WriteLine(e.Message);
                Console.ReadKey();
                return;
            }
 
            Console.WriteLine("\"");
            Console.ReadKey();
        }
    }
}
2
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
16.01.2014, 23:46
вот так можно
C#
1
2
3
4
5
6
7
8
9
10
11
            try
            {
                if (!Directory.Exists(way + @"\")) // Проверяем, существует ли данный каталог
                {
                    Directory.CreateDirectory(way + @"\"); // если нет, то создаем его.
                    if (!File.Exists(way + @"\information.txt")) // Проверяем, существует ли данный файл
                    {
                        File.CreateText(way + @"\information.txt"); // Если нет, то создаем его
                    }
                }}
            catch (Exception e){Console.WriteLine ("Error: "+e.Message);Console.ReadLine();return;}
1
11 / 11 / 3
Регистрация: 12.05.2014
Сообщений: 189
12.06.2016, 01:36
Подыму старую тему.
Как обработать ошибку в Smtp.Send(Message); ?
Выполняется в функциина отправку почты. Хочу перехватить эту и любую другую ошибку. Текущая вызвана тем, что smtp сервер не доступен по указанному порту.

catch (Exception e) не работает

При ошибке визуал студио выдает
@path "D:\\\\temp\\\\TMP\" string
+ Message {System.Net.Mail.MailMessage} System.Net.Mail.MailMessage
+ Smtp {System.Net.Mail.SmtpClient} System.Net.Mail.SmtpClient

Сейчас блок обработка выглядит как
C#
1
2
3
4
5
6
catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                string sendinfo = "1";
                return sendinfo;
            }
но не перехватывает ошибку.

Добавлено через 3 часа 22 минуты
При построении билда ошибка успешно перехватывается. Из визуал студио не перехватывается. Как-то в студии можно добиться перехвата?
0
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
12.06.2016, 07:13
Alexsandr, в visual studio, в меню отладка в настройках исключений - включи перехват (остановку) на нужном типе исключений
0
11 / 11 / 3
Регистрация: 12.05.2014
Сообщений: 189
12.06.2016, 22:19
Возник еще один вопрос.
Если
Использую
C#
1
2
3
4
5
6
7
8
try
{
..........
}
catch()
{
..
}
А потом после этого опять идет код который хочу завернуть в try..catch, то фокус не получается. Получаю ошибки в коде который находится.
Можно ли делать несколько блоков или блок try..catch в каждой функции только один?
0
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
12.06.2016, 23:17
Alexsandr, можете делать сколько угодно try/cath, а также try/cath внутри try/cath.
0
11 / 11 / 3
Регистрация: 12.05.2014
Сообщений: 189
12.06.2016, 23:39
Что тогда не так делаю к примеру вот здесь?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public static string sendmailss(int ports, string otkogo, string parol, string komy, string serversmtp,
                                       string tema, string text, string path)
        {
            try { 
 
                        /* здесь указываете SMTP и Порт,   */
            SmtpClient Smtp = new SmtpClient(serversmtp, ports);
 
            /* здесь на месте  логин, на месте пароль, 
            если у вас [email]example@mail.ru[/email] то указываете просто example (без mail.ru) */
            Smtp.Credentials = new NetworkCredential(otkogo, parol);
            MailMessage Message = new MailMessage();
 
            /* указываете свой E-mail, на месте указываете куда будет отправлено письмо (это может быть не обязательно rambler)*/
            Message.From = new MailAddress(otkogo);
            Message.To.Add(new MailAddress(komy));
 
            /*Тема сообщения на месте Theme и текст сообщения на месте Text*/
            Message.Subject = tema;
            Message.Body = text;
 
 
            Directory.GetFiles(@path, "*.*").ToList().ForEach(name => Message.Attachments.Add(new Attachment(name, MediaTypeNames.Text.Plain)));//создаёте папку send в директории с exe файлом и в неё закидываете файлы
 
                }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                string sendinfo = "1";
                return sendinfo;
                //Console.ReadLine();
            }
            try
            {
                Smtp.Send(Message); //сообщение отправлено
            
            string sendinfo = "0";
            return sendinfo;
            }
            //обработка ошибок, нужно добавить переменную для оповещения успешная операция или нет и вернуть её?            
 
 
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                string sendinfo = "1";
                return sendinfo;
                //Console.ReadLine();
            }
           
 
        }
Вот эта строка "Smtp.Send(Message); //сообщение отправлено" получается с ошибкой. Что я упускаю в этой ситуации?

Добавлено через 52 секунды
Severity Code Description Project File Line Suppression State
Error CS0103 The name 'Smtp' does not exist in the current context ConsoleApplication3 E:\Мои Документы\Visual Studio 2015\ConsoleApplication3\ConsoleApplicat ion3\Program33.cs 90 Active
Error CS0122 'Message' is inaccessible due to its protection level ConsoleApplication3 E:\Мои Документы\Visual Studio 2015\ConsoleApplication3\ConsoleApplicat ion3\Program33.cs 90 Active
0
4 / 4 / 1
Регистрация: 06.06.2016
Сообщений: 48
12.06.2016, 23:51
Alexsandr, У вас же второй try catch не вложен в первый как вы хотели.
1
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
13.06.2016, 00:12
Переменные, объявленные внутри try видны только внутри try. Вынесите объявление SmtpClient Smtp перед try.
1
11 / 11 / 3
Регистрация: 12.05.2014
Сообщений: 189
13.06.2016, 08:40
А их можно еще и вкладывать друг в друга? Сколько интересного получается.
0
11 / 11 / 3
Регистрация: 12.05.2014
Сообщений: 189
29.06.2016, 00:09
Создал ситуацию с ошибкой, ошибка ловится, все хорошо. Но мне нужно что бы после ловли было возвращение из процедуры, а код возвращается похоже на следующую строчку и работает дальше. Как бы это исправить?
Получается вариант
ошибка - обработал и вышел в маин.
Вариант
C#
1
2
3
4
5
6
7
catch (Exception e)
            {
                Console.WriteLine(e.Message);
                zapisdel(e.Message);
                 sendinfo = "1";
                return sendinfo;
             }
продолжает выполнения кода.
0
0 / 0 / 1
Регистрация: 25.06.2016
Сообщений: 6
29.06.2016, 00:29
а что у вас после блока catch идёт?
0
11 / 11 / 3
Регистрация: 12.05.2014
Сообщений: 189
29.06.2016, 20:07
Ничего. Это конец функции, дальше только }
0
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
29.06.2016, 21:00
Эмм?
Цитата Сообщение от Alexsandr Посмотреть сообщение
на следующую строчку и работает дальше.
но следующая строчка по вашим словам
Цитата Сообщение от Alexsandr Посмотреть сообщение
Ничего. Это конец функции
0
11 / 11 / 3
Регистрация: 12.05.2014
Сообщений: 189
29.06.2016, 23:32
Идет похоже возврат на строку которая идет после ошибки. Логируется ошибка и вместо выхода идет переход/
Вот все в сборе. По моим представлением возврат должен быть с "1" при ошибке. Но идет обработка ошибки и ппотом возврат "0".
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
        public static string sendmailss(int ports, string otkogo, string parol, string komy, string serversmtp,
                                       string tema, string text, string path)
        {
            string sendinfo = "0";
            try
            {
 
                // try{ //начало блока контролируемого на ошибки
 
 
 
                /* здесь указываете SMTP и Порт,  25 или 2525 */
                SmtpClient Smtp = new SmtpClient(serversmtp, ports);
 
                /* здесь на месте указываете логин, на месте пароль, 
                если у вас [email]example@mail.ru[/email] то указываете просто example (без mail.ru) */
                Smtp.Credentials = new NetworkCredential(otkogo, parol);
                MailMessage Message = new MailMessage();
 
                /* указываете свой E-mail, на месте указываете куда будет отправлено письмо (это может быть не обязательно rambler)*/
                Message.From = new MailAddress(otkogo);
                Message.To.Add(new MailAddress(komy));
 
                /*Тема сообщения на месте Theme и текст сообщения на месте Text*/
                Message.Subject = tema;
                Message.Body = text;
 
                if (Directory.EnumerateFiles(path).Count() <= 0)
                {
                    //if (var Directory.GetFiles(@path,"*.*))!="" {
                    string sobitie = "Файлы в каталоге " + path + " Не обнаружены, отправка пропущена";
                    zapisdel(sobitie);
                    sendinfo = "1";
                    return sendinfo;
 
                    /*все пропало, файла нет, надо срочно что-то делать*/
                }
                else {
                    int filesrahunok = Directory.EnumerateFiles(path).Count();
                    string sobitie = "В каталоге " + filesrahunok.ToString() + " файлов";
                    zapisdel(sobitie);
                    //Directory.GetFiles(@path, "*.*").ToList(string).foundfiles; //проверк аналичия файлов в каталоге
                    // sobitie = "foundfiles";
                    //zapisdel(sobitie);
 
                    Directory.GetFiles(@path, "*.*").ToList().ForEach(name => Message.Attachments.Add(new Attachment(name, MediaTypeNames.Text.Plain)));//создаёте папку send в директории с exe файлом и в неё закидываете файлы
 
 
 
                    //int ErrorsSend = 0;
                    Smtp.Send(Message); //сообщение отправлено
                                        //File.Move(path, "C:\\sendmail\\arh"); //если файл отправили - реализация перемещенгия в архив
 
                
                      sendinfo = "0"; //!
                     return sendinfo;//!
                   
                }
            }
            //обработка ошибок, нужно добавить переменную для оповещения успешная операция или нет и вернуть её?             Вроде бы вернули, обрабатывается, хотя и просто.
 
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                zapisdel(e.Message);
                 sendinfo = "1";
                return sendinfo;
                int ErrorsSend = 1;
                //Console.ReadLine();
            }
 
 
        }
Там могут быть ошибки небольшие, могло не все сохраниться, пока не могу в среде проверить.

Добавлено через 1 час 28 минут
Нет возврата а таком коде return видать по другому работает. Решение через ref работает.
0
103 / 104 / 54
Регистрация: 23.03.2016
Сообщений: 462
29.06.2016, 23:37
Alexsandr, сделайте цикл while (true), в конце try блока break;
0
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
30.06.2016, 07:35
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public static string sendmailss(int ports, string otkogo, string parol, string komy, string serversmtp, string tema, string text, string path)
        {
            string sendinfo = "0";
            try
            { 
                //начало блока контролируемого на ошибки
 
                /* здесь указываете SMTP и Порт,  25 или 2525 */
                SmtpClient Smtp = new SmtpClient(serversmtp, ports);
 
                /* здесь на месте указываете логин, на месте пароль, 
                если у вас [email]example@mail.ru[/email] то указываете просто example (без mail.ru) */
                Smtp.Credentials = new NetworkCredential(otkogo, parol);
                MailMessage Message = new MailMessage();
 
                /* указываете свой E-mail, на месте указываете куда будет отправлено письмо (это может быть не обязательно rambler)*/
                Message.From = new MailAddress(otkogo);
                Message.To.Add(new MailAddress(komy));
 
                /*Тема сообщения на месте Theme и текст сообщения на месте Text*/
                Message.Subject = tema;
                Message.Body = text;
 
                if (Directory.EnumerateFiles(path).Count() < 1)
                {
                    //if (var Directory.GetFiles(@path,"*.*))!="" {
                    string sobitie = "Файлы в каталоге " + path + " Не обнаружены, отправка пропущена";
                    zapisdel(sobitie);
                    /*все пропало, файла нет, надо срочно что-то делать*/
                }
                else {
                    int filesrahunok = Directory.EnumerateFiles(path).Count();
                    string sobitie = "В каталоге " + filesrahunok.ToString() + " файлов";
                    zapisdel(sobitie);
                    //Directory.GetFiles(@path, "*.*").ToList(string).foundfiles; //проверк аналичия файлов в каталоге
                    // sobitie = "foundfiles";
                    //zapisdel(sobitie); 
                    Directory.GetFiles(@path, "*.*").ToList().ForEach(name => Message.Attachments.Add(new Attachment(name, MediaTypeNames.Text.Plain)));//создаёте папку send в директории с exe файлом и в неё закидываете файлы 
                    //int ErrorsSend = 0;
                    Smtp.Send(Message); //сообщение отправлено
                                        //File.Move(path, "C:\\sendmail\\arh"); //если файл отправили - реализация перемещенгия в архив                 
                }
            }
            //обработка ошибок, нужно добавить переменную для оповещения успешная операция или нет и вернуть её?             Вроде бы вернули, обрабатывается, хотя и просто.
             catch (Exception e)
            {
                Console.WriteLine(e.Message);
                zapisdel(e.Message);
                 sendinfo = "1";                
                int ErrorsSend = 1;
                //Console.ReadLine();
            }
 return sendinfo; 
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.06.2016, 07:35
Помогаю со студенческими работами здесь

Отлов ошибок Try-catch или параноя
Кто на сколько часто использует забивание ошибок данными конструкциями без отлова, какая именно ошибка произошла? Приведу пример: есть...

отлов ошибок try, catch зачем он нужен?
я вот пишу прогу, которая не отлавливает ошибку. try { int i=10; i=i/0; } catch(...) { printf(&quot;\n...

Обработка ошибок в try...catch при работе с БД
В хранимой процедуре делаю RAISERROR 10000000,'...' (MS SQL2000). В скрипте JScript ASP страницы в блоке try ... catch вызываю. В одном...

Перехват ошибок
В программе очень много имеется блоков try catch.....тут всё устраивает Но вот гдето чтото не получается поймать и выскакивает...

перехват ошибок
Здравствуйте! У меня есть Stringgrid и кнопка. Если какая-то ячейка Грида пустая, мы должны выввести сообщение об ошибке. ПОдскажите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru