Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование (VB,C#,ASP,.NET): новости, советы, примеры


Выпуск # 758

Приветствую вас, любители высоких технологий! Вот и очередной выпуск рассылки. За неделю на сайте появилось много новых и интересных материалов, некоторые из которых вы сможете увидеть в этом выпуске.
Надеюсь, этот выпуск будет интересен для вас. Если вы хотите увидеть в следующих выпусках что-то конкретное, напишите мне об этом на ящик subscribe@kbyte.ru.


Содержание выпуска

Читайте в этом выпуске:

Если у вас есть вопросы по программированию или работе с компьютером, не стесняйтесь, спрашивайте.

Форумы Kbyte.Ru

На форумах Kbyte.Ru постоянно появляются новые интересные темы и обсуждения. В этом выпуске представлены лишь новые темы, с момента прошлой рассылки.

Кстати, любой желающий может на форумах Kbyte.Ru совершенно свободно получить помощь грамотных специалистов в области программирования, да и в целом информационных технологий.

Задать свой вопрос прямо сейчас

Подскажите как на C# подсчитать количество строк в файле?

[- к содержанию -]

Ответ #1 @Алексей Немиро 21.01.2014 10:38
int linesCount = System.IO.File.ReadAllLines("путь к файлу").Length;

[- к содержанию -]

Ответ #2 @Chernihaa 21.01.2014 10:45
А по конкретней?

[- к содержанию -]

Ответ #3 @Алексей Немиро 21.01.2014 10:59
Класс File находится в пространестве имен System.IO, в библиотеке mscorlib.dll (по умолчанию включена во всех типах проектов).
Статичный метод ReadAllLines принимает физический путь к файлу, а также может принимать кодировку во втором параметре. Метод читает указанный файл и возвращает массив строк, где каждый элемент массива является одной строкой файла. При помощи свойства Length можно узнать длину любого массива.

Для примера, количество строк передается в переменную с именем linesCount типа int (целое 32-битное число). Переменную можно использовать по своему смотрению, как и любые другие переменные, либо вовсе обойтись без неё.

С чем именно возникли проблемы? :)

[- к содержанию -]

Ответ #4 @Chernihaa 21.01.2014 12:10
Я просто открываю файл через "открытьToolStripMenuItem_Click" и соответственно не знаю где файл будет лежать!

[- к содержанию -]

Ответ #5 @Алексей Немиро 21.01.2014 12:36
В обработчике события Click элемента открытьToolStripMenuItem_Click должен же быть код (сам он там появиться не мог, его нужно было написать) открытия файла, в котором можно найти, какой именно файл открывается.

Если файл загружается в текстовое поле, то предложенный мной вариант будет неправильным, также как и текст вопроса.

Узнать, сколько строк в тексте можно разбив текст на строковой массив по символам перевода строк (\r\n).
Разбить текст на массив можно функцией Split.

Например, если текст в строковой переменной txt, то код может быть таким:
int linesCount = txt.Split('\r').Length
MessageBox.Show(String.Format("В тексте {0} строк", linesCount));

Если текст находится в текстовом поле, то разбивать его на массив не нужно, т.к. текстовое поле имеет свойство Lines, которое как раз и содержит массив строк текста.
Например, если текст находится в элементе textBox1, то код может быть таким:
MessageBox.Show(String.Format("В тексте {0} строк", textBox1.Lines.Length));

[- к содержанию -]

Добавить свой ответ в эту тему · В теме есть еще 13 ответов. Смотреть все ответы.
В общем есть сайт к примеру http://antikey.moy.su/news/rozy_sokolov_n_i_1991/2014-01-19-6158
в хроме достал Xpath к телу новости //*[@id="mainTable"]/tbody/tr[2]/td[2]/table/tbody/tr/td/table[1]/tbody/tr[2]/td
удалил все /tbody как нужно получил следующий путь //*[@id="mainTable"]/tr[2]/td[2]/table/tr/td/table[1]/tr[2]/td

написал код:

string textFind = "//*[@id="mainTable"]/tr[2]/td[2]/table/tr/td/table[1]/tr[2]/td";

HtmlDocument doc = new HtmlDocument();                                              // Создаём документ для парсинга содержимого новости
doc.LoadHtml(InText);

HtmlNodeCollection n1;
 try { n1 = doc.DocumentNode.SelectNodes(textFind); }                     // Парсим нужный элемент по указанному адресу
catch (Exception) { return; }

HtmlNode hrefValueFind;
try { hrefValueFind = doc.DocumentNode.SelectSingleNode(textFind); }                // Парсим нужный элемент по указанному адресу
catch (Exception) { return; }

Ни один из способов не работает, не подскажите может хром даёт не верный Xpath для библиотеки HtmlAgilityPack, может его ещё как-нить изменить нужно

заранее спасибо

[- к содержанию -]

Доброго времени суток, товарищи.

такая проблема: есть Label1, например
я хочу сделать её копию:

Label1.Location=new Point(3,3)

Dim Lab as New Label
Lab=Label1
Lab.Location=new Point(5,5)

Controls.Add(Label1)
Controls.Add(Lab)

в результате на форме только одна Label с координатами (5,5)

Вопрос: как сделать копию со всеми свойствами на момент присвоения значения?

[- к содержанию -]

Ответ #1 @Shark1 18.01.2014 22:11
Dim lbl As New Label
lbl.Text = "Копия " & Label1.Text
lbl.Location = New Point(3)
Me.Controls.Add(lbl)

как-то так ...

[- к содержанию -]

Ответ #2 @Сергей 19.01.2014 09:56
Мне нужна копия со всеми свойствами, а не только .Text
Я её использую как кнопку а не надпись (Button не катит..)

[- к содержанию -]

Ответ #3 @Shark1 19.01.2014 11:42
Может тогда лучше использовать привязки, типа такой:

Label1.Location = New Point(5, 5)
Dim Label2 As New Label
Dim b As Binding = New Binding("Text", Label1, "Text")
Label2.DataBindings.Add(b)
Label2.Location = New Point(5, 50)
Me.Controls.Add(Label2)

Тем более, что Label-то и нужен только для показа какой-то там текстовой информации.

[- к содержанию -]

Ответ #4 @Алексей Немиро 19.01.2014 11:48
Руками копировать, как показал Shark1, тупо перечисляя нужные свойства.
Dim lbl As New Label()
lbl.Text = "Копия " & Label1.Text
lbl.Visible = Label1.Visible
lbl.Borderstyle="Label1.BorderStyle"
lbl.ForeColor = Label1.ForeColor
'и т.д. и т.п.
lbl.Location = New Point(3)
Для не ссылочных свойств можно сделать установку значений циклом:
Dim lbl As New Label()
Dim arr() As String = {"Text", "ForeColor", "BackColor", "BorderStyle", "Visible", "AutoSize"}
Dim properties() As System.Reflection.PropertyInfo = lbl.GetType().GetProperties()
For Each s As String In arr
  Dim prop As System.Reflection.PropertyInfo = Array.Find(properties, Function(p) p.Name = s)
  prop.SetValue(lbl, prop.GetValue(Label1, Nothing), Nothing)
Next
lbl.Location = New Point(Label1.Location.X, Label1.Location.Y + Label1.Height + 2)
Me.Controls.Add(lbl)
Со ссылочным типами, включая события все будет немного сложнее, т.к. их нельзя просто присвоить, точнее можно, но это будет не новое значение, а ссылка на старое, со всеми вытекающими последствиями. Для ссылочных типов придется писать код руками. Можно и цикл использовать, но кода будет много, а если он будет непонятным, то смысла в этом нет.

PS: Кнопки из Label лучше не делать, если нужно что-то плоское и разноцветное, то это можно легко нарисовать.

[- к содержанию -]

Ответ #5 @Сергей 19.01.2014 12:30
Shark1, Алексей - спасибо.
Я примерно как Shark1 сделал:

Sub SetLabProp (byref Lab as Label)

Алексей как всегда - на недосягаемой высоте
твой код можно только скопировать и вставить, понять - думаю не скоро.. с моими-то познаниями...

Насчет нарисовать - пробовал (на PictureBox)
Но это надо в ресурсах картинки хранить (как я понимаю)
а тут я просто указал Font = ...Wingdings

или тут в другом дело? например много ненужных событий обрабатывается? Подскажи

[- к содержанию -]

Добавить свой ответ в эту тему · В теме есть еще 7 ответов. Смотреть все ответы.
Помогите

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

[- к содержанию -]

Ответ #1 @Алексей Немиро 19.01.2014 11:53
Что такое метод сортировки бинарными включениями?

[- к содержанию -]

Ответ #2 @Анюта :) 19.01.2014 12:25
По другому еще называют метод бинарными вставками.

[- к содержанию -]

Ответ #3 @Анюта :) 19.01.2014 12:26
Http://learnprogramm.ucoz.ru/index/binarnymi_vstavkami/0-71

[- к содержанию -]

Ответ #4 @Алексей Немиро 19.01.2014 12:38
Слишком много текста :) Опишите в двух словах действия конечного алгоритма.

[- к содержанию -]

Ответ #5 @Анюта :) 19.01.2014 13:26
Последовательность до i компонента делится пополами i компонент сравнивается со стоящим в середине,потом получившийся полуинтервал делится пополам и опять сравнивается с серединой.и так до тех пор пока не станет известно место i компонента.

[- к содержанию -]

Добавить свой ответ в эту тему · В теме есть еще 12 ответов. Смотреть все ответы.
Вот код:


string postData = "login_name=" + System.Web.HttpUtility.UrlEncode("NewMyLogin1234", Encoding.GetEncoding(1251)) +         // Логин для авторизации
                "&login_password=" + System.Web.HttpUtility.UrlEncode("New password", Encoding.GetEncoding(1251)) +     // Пароль для авторизации
                "&subaction=dologin";
 
            byte[] buffer = null;
 
            using (var memoryStream = new MemoryStream(
                   Encoding.GetEncoding(1251).GetBytes(postData)))//:::encoding
            {
                buffer = memoryStream.ToArray();
            }
 
            string AdditionalHeaders = "Content-Type: application/x-www-form-urlencoded" + Environment.NewLine
                + "Referer: http://deficitwarez.ru/admin222.php?" + Environment.NewLine;
 
            webBrowser1.Navigate("http://deficitwarez.ru/admin222.php", "", buffer, AdditionalHeaders);

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

[- к содержанию -]

Ответ #1 @Алексей Немиро 17.01.2014 18:12
Здесь такая же проблема, на которую я два раза указывал в предыдущей теме (один раз я даже использовал красный шрифт). Это либо тотальная невнимательность, либо используется авторизация на каком-то другом сайте, а не deficitwarez.ru :) Я там говорил, что чаще всего программисты забывают про Content-Type, нет, я ошибался, чаще всего программисты страдают из-за невнимательности





Как видно, это такой же код, что и в вопросе, только имена параметров правильные.

[- к содержанию -]

Ответ #2 @dimawork 17.01.2014 18:43
Это точно, страдаю

[- к содержанию -]

Добавить свой ответ в эту тему

Все темы и обсуждения

Исходные коды

Convert image to negative

Visual Basic .NET: Графика @Shark1 22.01.2014 23:12
Пример преобразования изображения в негативное изображение в Windows Presentation Foundation.

К данном исходному коду прилагаются файлы примеров. Скачать.

[- к содержанию -]

Все исходные коды

Вакансии в IT

Программист 1С

Россия, Красноярск | Работа в офисе | 75 000,00 KBP

Программист Java

Россия, Новосибирск | Работа в офисе

Разработчик интерактивных проектов

Россия, Новосибирск | Работа в офисе

PHP-разработчик

Россия, Новосибирск | Работа в офисе

Инженер-программист

Россия, Новосибирск | Работа в офисе | 27 000,00 KBP

Программист

Россия, Новосибирск | Работа в офисе | 15 000,00 KBP

Seo оптимизатор

Россия, Новосибирск | Работа в офисе

Программист 1С

Россия, Самара | Работа в офисе

Программист

Россия, Ростов-на-Дону | Работа в офисе | 10 000,00 KBP

Инженер-программист станков с ЧПУ

Россия, Ростов-на-Дону | Работа в офисе | 35 000,00 KBP

Все вакансии в IT · Создать резюме

[- к содержанию -]

Новости мира IT

В российском сегменте сети Tor нашли следящие за Facebook узлы

В российском сегменте анонимной сети Tor нашли узлы, способные перехватывать интернет-трафик и отслеживать активность пользователей в Facebook. Узлы были обнаружены в ходе эксперимента, проведенного учеными из шведского университета в Карлстадте. Всего обнаружено 25 потенциально опасных узлов, 18 из них располагались в России.

23.01.2014 10:45 · Категория: Безопасность · Источник: Lenta.ru

[- к содержанию -]

Троянец Zipvideom устанавливает вредоносные плагины к браузерам Mozilla Firefox и Google Chrome

Компания «Доктор Веб» сообщила об активном распространении, в частности, через социальную сеть Facebook, троянской программы Trojan.Zipvideom.1, устанавливающей на компьютер пользователя вредоносные расширения (плагины) к браузерам Mozilla Firefox и Google Chrome. Эти плагины препятствуют свободному просмотру веб-страниц, демонстрируя навязчивую рекламу.

Вредоносная программа Trojan.Zipvideom.1 попадает на компьютеры жертв под видом обновления для браузерного плагина Adobe Flash. Также, согласно поступившей от пользователей информации, в начале 2014 года образцы данного троянца распространялись с использованием массовых рассылок сообщений в социальной сети Facebook. Имеются основания полагать, что автор троянца говорит на турецком языке.

Если пользователь соглашается с рекомендацией обновить Adobe Flash Player, на его компьютер скачивается первый компонент троянца — программа FlashGuncelle.exe, при этом пользователю демонстрируется ход установки якобы обновления к Flash Player.

Далее FlashGuncelle.exe связывается с сервером злоумышленников и скачивает на компьютер жертвы следующий компонент троянца — дроппер, который устанавливает и запускает еще несколько компонентов вредоносной программы. Среди них — файл Flash_Plugin.exe, который модифицирует ветвь системного реестра, отвечающую за автозагрузку приложений, а затем скачивает и устанавливает плагины к браузерам Mozilla Firefox и Google Chrome.

Опасность этого троянца заключается в том, что загружаемые им плагины мешают свободному просмотру сайтов, демонстрируя рекламу, а также имеют возможность скачивать на компьютер жертвы другое нежелательное программное обеспечение. Установлено, что при посещении сайтов популярных социальных сетей (Twitter, Facebook, Google, YouTube, Vkontakte) эти плагины загружают Java-скрипты сомнительного назначения.

22.01.2014 11:31 · Категория: Безопасность · Источник: CyberSecurity.ru

[- к содержанию -]

IBM задумалась о продаже части серверного бизнеса

Корпорация IBM, по неофициальным данным, планирует продать часть своего подразделения по выпуску серверов. Продаже подлежит, в частности, линейка System x на архитектуре x86. В числе возможных покупателей СМИ называют Lenovo и Dell. Lenovo уже вела с IBM переговоры в 2013 году, но компании не сошлись в цене.

22.01.2014 11:29 · Категория: Бизнес в IT · Источник: Lenta.ru

[- к содержанию -]

Все новости


Подпишитесь на тематические RSS-ленты Kbyte.Ru, чтобы быть в курсе последних новостей:

Основная лента · Форумы (темы и сообщения) · Visual Basic 5.0/6.0 · Visual Basic .NET · C# (Си шарп) · Delphi · JavaScript · ActionScript · ASP .NET · ASP .NET MVC

Ищите Kbyte.Ru в социальных сетях FaceBook, ВКонтакте, Twitter.

Если вы занимаетесь программированием, то наверняка вам пригодятся хитрые инструменты.


Международный портал для программистов и разработчиков Kbyte.Ru основан в 2006 году. Целью портала является объединение программистов и специалистов IT-бизнеса, студентов и преподавателей для обмена опытом и знаниями, оказания помощи во всех делах и начинаниях в области IT.
Kbyte.Ru является парнёром компаний Mail.Ru Group, WebMoney Transfer, Ozon.Ru и др.
Выпуск рассылки подготовлен автоматически. Все права на материалы выпуска принадлежат Kbyte.Ru если иное не указано отдельно.


В избранное