garikn

Client
Регистрация
03.08.2021
Сообщения
148
Благодарностей
33
Баллы
28
Для меня пока сложно это...
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113

Brabus_bots

Client
Регистрация
13.04.2019
Сообщения
789
Благодарностей
541
Баллы
93
Покидайте по больше примеров использования массива, не совсем понимаю в каких случаях он может пригодится.
Прошу простить за долгий ответ, но лучше поздно, чем никогда)

Привожу реальный пример из своих проектов. В некоторых частях шаблона мне нужно чекнуть почтовый аккаунт (например mail.ru) по протоколу imap

imap - это протокол для получения входящей почты. По данному протоколу работают такие ПО, как TheBat и Thunderbird

Для работы с imap я использую специальную библиотеку, в которой предполагается возможность подключать прокси к аккаунту при получении входящей почты.

На вход подаются 2 параметра (две переменные string):
1) логин и пароль от аккаунта в формате login:password
2) прокси в формате ip:port:login:password

Формат установки прокси в данной библиотеке не стандартный. Нужно отдельно указать версию socks, айпи, порт, логин и пароль.

Для этого нам нужно распарсить прокси. Это безусловно можно сделать регулярками или еще как-то, но для такой простой задачи я просто разделить строку с прокси по разделителю - двоеточию ":"

Получившиеся разделенные данные я сохранил в массив, а затем обращался к элементам массива по их индексу.

Использования массива на примере парсинга данных от прокси:
//например на вход поступил такой прокси
string proxy = "111.222.333.444:55555:login1:password1";

//создаём массив с названием words и складываем в него результат разбиение прокси по разделителю-двоеточию
string[] words = proxy.Split(new char[] { ':' });

//результатом будет массив {"111.222.333.444", "55555", "login1", "password1"}

//создаём переменные с названиями p_ip, p_port, p_login, p_password и передаём в них значения из массив
string p_ip = words[0];
int p_port = Convert.ToInt32(words[1]);
string p_login = words[2];
string p_password = words[3];

//в этой части кода создаётся imap подключение
//в этой части кода создаётся imap подключение
//в этой части кода создаётся imap подключение

//а вот в этой части кода мы задаём параметры прокси согласно формату, который поддерживает библиотека
imap.SocksVersion = 5;
imap.SocksHostname = p_ip;
imap.SocksPort = p_port;
imap.SocksUsername = p_login;
imap.SocksPassword = p_password;


//p.s. данный код можо было сократить, и задать параметры прокси сразу значениями из массива
imap.SocksVersion = 5;
imap.SocksHostname = words[0];
imap.SocksPort = Convert.ToInt32(words[1]);
imap.SocksUsername = words[2];
imap.SocksPassword = words[3];
Старался объяснить как можно подробнее)
 

valeron

Новичок
Регистрация
03.10.2020
Сообщения
8
Благодарностей
1
Баллы
3
Подскажите как использовать функцию EnumChildWindows в зенке
 

Brabus_bots

Client
Регистрация
13.04.2019
Сообщения
789
Благодарностей
541
Баллы
93

SlipDez

Client
Регистрация
18.07.2018
Сообщения
379
Благодарностей
70
Баллы
28
Конструкция try...catch
пытаюсь выполнять код

выдает ошибка конвертации:
try {
string a = 0;
    int b = 2;
    return a + b ;
}
catch (Exception e) {
project.SendInfoToLog("ошибка");
}
Знаю что нельзя конвертировать, разные типы данных если явно не могут преобразоваться. Хотелось бы понять в каких случаях можно использовать данную конструкцию

Оператор goto
пытаюсь использовать в цикле но не хочет переходить к другому элементу, не могли бы выложить пример использования конструкции
 
  • Спасибо
Реакции: Brabus_bots и Phoenix78

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
Оператор goto
пытаюсь использовать в цикле но не хочет переходить к другому элементу, не могли бы выложить пример использования конструкции
Лучше его не использовать. а try...catch для отлова ошибок.
C#:
try
{
// Выполняемый код
}
catch (Exception e)
{// Если будет ошибка
    project.SendErrorToLog("ошибка" + e.Message);//e.Message = подробности ошибки
}
после catch пойдет дальше как будто ошибки не было (только информация в логе будет)
Без trycatch выйдет по красной

Для конвертации типов используйте специальные методы.
C#:
int a = 3;
string b = "5";

int с = int.Parse(b) + a ;// 8
 
Последнее редактирование:

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 262
Благодарностей
680
Баллы
113
Конструкция try...catch
пытаюсь выполнять код

выдает ошибка конвертации:
try {
string a = 0;
    int b = 2;
    return a + b ;
}
catch (Exception e) {
project.SendInfoToLog("ошибка");
}
Знаю что нельзя конвертировать, разные типы данных если явно не могут преобразоваться. Хотелось бы понять в каких случаях можно использовать данную конструкцию

Оператор goto
пытаюсь использовать в цикле но не хочет переходить к другому элементу, не могли бы выложить пример использования конструкции
Явное преобразованивание это вот так

string a = 0;
int b = 2;
return Convert. ToInt32(a) + b ;

Не явное это вот
Int a = 5;
Double b = a;

Трай кэтч обычно используют когда при возникновении ошибки надо какую то обработку сделать, как раз в блоке кэтч эту обработку и делают.

А код увидеть можно где с гото проблемы ?

Вопрос конечно вообще не понял толком, ответил как мог )
 
  • Спасибо
Реакции: Brabus_bots

SlipDez

Client
Регистрация
18.07.2018
Сообщения
379
Благодарностей
70
Баллы
28
Лучше его не использовать. а try...catch для отлова ошибок.
C#:
try
{
// Выполняемый код
}
catch (Exception e)
{// Если будет ошибка
    project.SendErrorToLog("ошибка" + e.Message);//e.Message = подробности ошибки
}
после catch пойдет дальше как будто ошибки не было (только информация в логе будет)
Без trycatch выйдет по красной

Для конвертации типов используйте специальные методы.
C#:
int a = 3;
string b = "5";

int с = int.Parse(b) + a ;// 8
Про конвертацию знаю, спасибо. В продолжении этой темы не могли бы вы привести примеры хороших шаблонов на C# (исходя из практики) которые стоит изучить чтобы лучше понять язык. Про goto честно говоря не понял почему не стоит использовать)
 
  • Спасибо
Реакции: Phoenix78

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
Про конвертацию знаю, спасибо. В продолжении этой темы не могли бы вы привести примеры хороших шаблонов на C# (исходя из практики) которые стоит изучить чтобы лучше понять язык. Про goto честно говоря не понял почему не стоит использовать)
Про хорошие шаблоны для изучения не могу сказать ) . Если хотите изучать шарп, то изучайте курсы по его обучению (не пропускайте основы и синтаксис), и пишите свои проекты, по мере изучения будете их переписывать ). Если хотите связку с зенно, то есть видеокурсы по обучению шарпу с параллельным написанием проектов зенно (например зенноакадемия от sibbora, можете поискать в интернете), есть и другие авторы.

А про goto, то лучше им не увлекаться, особенно в начале изучения, так лучше будете строить свою логику и циклы, понимать объектную модель и ООП с целом, а не делать переходы в нужное место, и потом разбираться откуда ошибки.
 

SlipDez

Client
Регистрация
18.07.2018
Сообщения
379
Благодарностей
70
Баллы
28
Про хорошие шаблоны для изучения не могу сказать ) . Если хотите изучать шарп, то изучайте курсы по его обучению (не пропускайте основы и синтаксис), и пишите свои проекты, по мере изучения будете их переписывать ). Если хотите связку с зенно, то есть видеокурсы по обучению шарпу с параллельным написанием проектов зенно (например зенноакадемия от sibbora, можете поискать в интернете), есть и другие авторы.

А про goto, то лучше им не увлекаться, особенно в начале изучения, так лучше будете строить свою логику и циклы, понимать объектную модель и ООП с целом, а не делать переходы в нужное место, и потом разбираться откуда ошибки.
Спасибо за развернутый ответ
 
  • Спасибо
Реакции: Phoenix78

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 434
Баллы
113

Brabus_bots

Client
Регистрация
13.04.2019
Сообщения
789
Благодарностей
541
Баллы
93
Это своя наработка или открытая библиотека?
Сейчас своей наработкой пользуюсь.

В посте говорилось про открытую библиотеку, которая по дефолту идёт с зенкой. Она называется ChilkatDotNet и её хватит для 90% задач. В названии библиотеки будет еще пару цифр, которые зависят от версии зенки.

Найти можно по пути:
C:\Program Files\ZennoLab\RU\ZennoPoster Pro V7\тут_версия_зенки\Progs
 
  • Спасибо
Реакции: Astraport

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)