Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для Scrypto
132 / 111 / 48
Регистрация: 08.02.2013
Сообщений: 621

Ребят, откомментируйте пожалуйста код

09.02.2013, 10:26. Показов 1402. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Заранее большое спасибо.

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
 string text = this.post("http://109.234.156.250/prison/universal.php?getFriendModels", "method=getFriendModels&user=" + this.textBox1.Text + "&key=" + this.textBox2.Text + "&friend%5Fuid=" + this.textBox1.Text);
            this.label8.Text = this.parse(text, "boss id=\"1\"", "</boss");
            this.label9.Text = this.parse(text, "boss id=\"2\"", "</boss");
            this.label10.Text = this.parse(text, "boss id=\"3\"", "</boss");
            this.label11.Text = this.parse(text, "boss id=\"4\"", "</boss");
            this.label12.Text = this.parse(text, "boss id=\"5\"", "</boss");
        }
        private string post(string uri, string req)
        {
            string s = req;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            request.UserAgent = "Opera/9.80";
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            byte[] bytes = Encoding.ASCII.GetBytes(s);
            request.ContentLength = bytes.Length;
            request.GetRequestStream().Write(bytes, 0, bytes.Length);
            request.GetRequestStream().Close();
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            return new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd();
        }
 
 
        string res;
        private string strNewValue;
        private string strResponse;
        private string parse(string text, string ind1, string ind2)
        {
            res = "";
            string[] stringSeparators = new string[] { "\n" };
            string[] result = text.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
            foreach (string stroka in result)
            {
                if (stroka.IndexOf(ind1) != -1)
                {
                    string[] Moneyy = stroka.ToString().Split((Convert.ToChar(">")));
                    res = Moneyy[1].Replace(ind2, "");
                }
            }
            return res;
Добавлено через 23 минуты
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.02.2013, 10:26
Ответы с готовыми решениями:

Ребят посмотрите код, какая-то аномалия блин!
Ребят подсобите с кодом! Черт совсем мозги не варят, не могу понять что происходит Сначала приведу код, потом разъясню проблему! ...

Ребят, кто-нибудь постройте блок-схему, пожалуйста) ума не приложу как это сделать
using System; using System.Windows.Forms; namespace WindowsFormsApplication14 //калькулятор { public partial class Form1 :...

откомментируйте пожалуйста код программы очень надо
сделайте хотя бы основные коментарии.. буду очень благодарен. заранее спасибо uses crt; var a:array of string; ...

8
62 / 62 / 5
Регистрация: 05.01.2013
Сообщений: 235
09.02.2013, 11:40
на форуме принято оформлять код в теги соответствующие
[CSHARP*]тут код[/CSHARP]
без звездочки.
1
 Аватар для Scrypto
132 / 111 / 48
Регистрация: 08.02.2013
Сообщений: 621
09.02.2013, 14:38  [ТС]
Время прошло, и я не могу отредактировать сообщение. Но учту на следующий раз.

Добавлено через 2 часа 55 минут
Неужели никто не может поставить комменты // ...
0
 Аватар для corlovito
461 / 442 / 75
Регистрация: 26.12.2012
Сообщений: 2,888
09.02.2013, 14:40
Цитата Сообщение от Scrypto Посмотреть сообщение
Время прошло, и я не могу отредактировать сообщение. Но учту на следующий раз.

Добавлено через 2 часа 55 минут
Неужели никто не может поставить комменты // ...
лучше напиши какие именно строчки непонятны, тогда проще комментировать будет
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
09.02.2013, 16:50
Лучший ответ Сообщение было отмечено как решение

Решение

Кликните здесь для просмотра всего текста
C#
1
string text = this.post("http://109.234.156.250/prison/universal.php?getFriendModels", "method=getFriendModels&user=" + this.textBox1.Text + "&key=" + this.textBox2.Text + "&friend%5Fuid=" + this.textBox1.Text);
Заранее условимся о том, что лепить везде, где только можно this - не очень хорошо - чтение кода очень ухудшается. Всяким TextBox'ам, Label'ам и прочим Control'ам необходимо давать имена, которые несут смысловую нагрузку. Ведь это сейчас понятно, что в textBox1, а через неделю - нет. Затем, длинна строки не должна быть такой длинной. На сколько я знаю, ограничиваются, вроде, 120 символами - золотая середина; я же, к примеру, позволяю себе до 140. Конкатенация (склеивание) строк в таком количестве лучше осуществлять с помощью метода string.Format.
Да и выделять значения (то же "http://109.234.156.250/prison/universal.php?getFriendModels") в переменную со звучным названием, даже если только раз она будет использоваться, лишним не будет. Это позволит уменьшить длину строки с ее использованием и увеличит на порядок читаемость кода.
C#
1
2
3
4
5
this.label8.Text = this.parse(text, "boss id=\"1\"", "</boss");
this.label9.Text = this.parse(text, "boss id=\"2\"", "</boss");
this.label10.Text = this.parse(text, "boss id=\"3\"", "</boss");
this.label11.Text = this.parse(text, "boss id=\"4\"", "</boss");
this.label12.Text = this.parse(text, "boss id=\"5\"", "</boss");
Дублирование кода - страшный грех. Метки необходимо поместить в коллекцию (к примеру с именем bosses) и заполнить циклом.
C#
1
private string post(string uri, string req)
Магическая переменная req, которая фиг пойми зачем.
C#
1
string s = req;
Эта строка сама гениальность. Замечу, что req больше не используется, а s используется только в одном месте. А смысл этой строки в том, чтобы запутать читателя.
C#
1
2
3
4
5
6
7
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.UserAgent = "Opera/9.80";
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
byte[] bytes = Encoding.ASCII.GetBytes(s);
request.ContentLength = bytes.Length;
request.GetRequestStream().Write(bytes, 0, bytes.Length);
Создается и отправляется на сервер запрос. Не ясно, зачем явно указан UserAgent. К другому нареканий нет, но в большинстве случаев строить http-заголовок бесполезно.
C#
1
request.GetRequestStream().Write(bytes, 0, bytes.Length);
Явный представитель "крушения поезда" Деметры со всеми вытекающими последствиями. Основной недостаток в том, что такой код тяжело в последствии отладить и найти возможное место проблемы. Так тяжело выделить переменную?
C#
1
request.GetRequestStream().Close();
А вот это спорный момент - лениво мне лезть в кишки. Приведу пример без объяснений: чем отличается свойство Square от метода GetSquare? Скорее всего тем, что свойство Square уже вычислено или вычисляется довольно быстро, а для метода GetSquare необходимо проделать ряд сложных и долгих операций, чтобы получить значение.
C#
1
2
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
return new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd();
У запроса получается ответ и возвращается в виде строки. Исключая уже озвученные мною ранее проблемы, поток на чтение не закрывается - утечка памяти. Почему на этот раз не полезли в http-заголовок, чтобы прочитать кодировку? Устали?
C#
1
2
3
string res;
private string strNewValue;
private string strResponse;
Вот это очень плохо и может привести к большим проблемам. Мало того, что не полное название переменной res с непонятным смыслом, так еще и не соблюдение своего же стандарта:
- если явно добавляется модификатор private, то следует это делать везде;
- Венгерская нотация здесь вообще не к месту - IDE подсказывает тип переменной. Вообще забудь про нее, мне уже с лихвой хватает всяких LPWSTR - спасибо, наелся.
Еще один грех в res. Я ведь уверен в том, что, кроме как в методе parse, он больше нигде не используется. Так делать - прямая дорога к превращению кода в лапшу.
C#
1
private string parse(string text, string ind1, string ind2)
Весь этот метод - один сплошной каламбур, который заменятся всего одним регулярным выражением.
C#
1
2
string[] stringSeparators = new string[] { "\n" };
string[] result = text.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
Это кому будет проще разбирать текст, если его разбить на строки? Машине или человеку? Бесполезное действие.
C#
1
2
3
4
5
6
7
8
foreach (string stroka in result)
{
    if (stroka.IndexOf(ind1) != -1)
    {
        string[] Moneyy = stroka.ToString().Split((Convert.ToChar(">")));
        res = Moneyy[1].Replace(ind2, "");
    }
}
stroka, какая stroka? Я иностранец, который понимает только интернациональный язык, читаю интересный мне код на github'е. Это я уже не говорю о том, что в C# принято называть методы с большой буквы, а имена локальных переменных - с маленькой.
Далее, строки в C# - это не массив символов. Описывать особенности не буду. Создавать же n строк в цикле, из которых используется только одна - я бы за такое руки открутил.
C#
1
stroka.ToString()
Зачем строку преобразовывать в строку?
И напоследок:
C#
1
(Convert.ToChar(">"))
C#
1
'>'
3
 Аватар для Scrypto
132 / 111 / 48
Регистрация: 08.02.2013
Сообщений: 621
09.02.2013, 21:08  [ТС]
Ну просто огрмное спасибо, меня эти this. тож очень сбивают.

Добавлено через 10 минут
Ну просто шикарно ты все описал ))
А можно тебя попросить, если конечно не сильно затруднит , выложить, то как бы ты это написал.
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
10.02.2013, 02:21
Scrypto, будет гораздо полезнее, если вы это сами сможете написать.
Чтобы хоть что-то написал я, мне необходимо как минимум тех. задание. Чтобы вы знали, не всегда глядя на код можно понять, что он делает. Тем более еще и не весь код представлен.
Мне как минимум не понятно, зачем описывать голову для http-запроса.
1
 Аватар для corlovito
461 / 442 / 75
Регистрация: 26.12.2012
Сообщений: 2,888
10.02.2013, 08:47
скажите пожалуйста какой у вас опыт программиста в годах, просто интересно за какой период можно дойти до вашего уровня и чем занимаясь
0
 Аватар для Scrypto
132 / 111 / 48
Регистрация: 08.02.2013
Сообщений: 621
10.02.2013, 12:24  [ТС]
Голову описывают, чтобы в бан не уйти скорее всего.
А код этот, бота для приложения вконтакте.
Вот выкладываю оригинал:

Приступим:
Для начала, нужно создать форму.
http://rupix.org/images/01630629027555036187.jpg

Я использовал:
TextBox - 2 шт
Button - 1 шт
Label - 6 шт

Теперь, будем добавлять код к каждому элементу.
- Перетаскиваем на нашу форму Button1, кликаем 2 раза, и добавляем вот такой код:

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
 string text = this.post("http://109.234.155.196/prison/universal.php?getInfo", "method=getInfo&user=" + this.textBox1.Text + "&key=" + this.textBox2.Text);
            this.label4.Text = this.parse(text, "<rating>", "</rating");
            this.label6.Text = this.parse(text, "<diamond>", "</diamond");
        }
        private string post(string uri, string req)
        {
            string s = req;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            request.UserAgent = "Opera/9.80";
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            byte[] bytes = Encoding.ASCII.GetBytes(s);
            request.ContentLength = bytes.Length;
            request.GetRequestStream().Write(bytes, 0, bytes.Length);
            request.GetRequestStream().Close();
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            return new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd();
        }
 
 
        string res;
        private string strNewValue;
        private string strResponse;
        private string parse(string text, string ind1, string ind2)
        {
            res = "";
            string[] stringSeparators = new string[] { "\n" };
            string[] result = text.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
            foreach (string stroka in result)
            {
                if (stroka.IndexOf(ind1) != -1)
                {
                    string[] Moneyy = stroka.ToString().Split((Convert.ToChar(">")));
                    res = Moneyy[1].Replace(ind2, "");
                }
            }
            return res;
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.02.2013, 12:24
Помогаю со студенческими работами здесь

Ребят, разъясните, пожалуйста, как сделать код, позволяющий заполнить одномерный массив
Ребят, разъясните, пожалуйста, как сделать код, позволяющий заполнить одномерный массив вида: __ G= ,i=l,m

Ребят, пожалуйста! Кто может выполнить задание пожалуйста?
1. Создать таблицу, которая содержит сведения о работе обменного пункта за день (продажа и покупка одного вида валюты). Структура...

Ребят пожалуйста отредактируйте программу пожалуйста Assembler
2.4. Дан двумерный массив целых чисел размером m*n. 1-Заменить минимальный по модулю элемент каждого столбца на противоположный. ...

Ребят пожалуйста
Народ, может ли кто ни будь взломать ВК одной девушки? Очень нужно. Давно встречаемся и появился ряд причин подозревать ее что она на лево...

Ребят, посоветуйте, пожалуйста
Здравствуйте! Нуждаюсь в советах Ноутбук умирает и пришло время собрать себе комп. Использование преимущественно для 3д программ и...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru