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

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


Выпуск # 656

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


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

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

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

Форумы Kbyte.Ru

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

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

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

Работа с XML @saranin 14.09.2011 11:20
Всем привет.
Вопрос такой:
Существует некий XML файл следующего вида.

 
<?xml version="1.0" encoding="utf-8"?> 
<Users> 
 <userItem ID="1"> 
 <LastName>Иванов</LastName> 
 <FirstName>Петр</FirstName> 
 <SecondName>Иванович</SecondName> 
 <Position>Менеджер</Position> 
 </userItem> 
 <userItem ID="2"> 
 <LastName>Петров</LastName> 
 <FirstName>Иван</FirstName> 
 <SecondName>Иванович</SecondName> 
 <Position>Программист</Position> 
 </userItem> 
</Users> 

Задача наибыстрейшим способом узнать последний ID у элемента userItem.

Сейчас делаю перебором в цикле
 
 Public Shared Function GetLastIDinXML() As Integer 
   Dim fileInfo = FileIO.FileSystem.GetFileInfo(pathToXML & NameOfXML) 
   Try 
    Dim xtr As New Xml.XmlTextReader(fileInfo.OpenRead) 
    Dim ID = 0 
    While xtr.Read 
     If xtr.NodeType = Xml.XmlNodeType.Element Then 
      If xtr.Name = "userItem" Then 
       ID = xtr.GetAttribute("ID") 
      End If 
     End If 
    End While 
    xtr.Close() 
    Return ID 
 
   Catch ex As Exception 
    Return 1 
   End Try 
  End Function 

Заранее спасибо!

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

Ответ #1 @Aleksey Nemiro 14.09.2011 12:21
Для этого можно использовать XPath (XML Path Language) - отдельный язык, созданный специально для обработки XML.

    Dim myXml As New System.Xml.XPath.XPathDocument("XMLFile1.xml") 'XMLFile1.xml - файл с xml-данными, который находится в одной папке с программой 
    Dim myNavigator As System.Xml.XPath.XPathNavigator = myXml.CreateNavigator() 
    'id 
    Dim lastMemberId As Integer = 0 
    lastMemberId = CType(myNavigator.Select("/Users/userItem[not(@ID <= preceding-sibling::userItem/@ID) and not(@ID <= following-sibling::userItem/@ID)]/@ID")(0), System.Xml.XPath.XPathNavigator).ValueAsInt() 
    'весь элемент 
    Dim lastMember As System.Xml.XPath.XPathNavigator 
    lastMember = myNavigator.Select("/Users/userItem[not(@ID <= preceding-sibling::userItem/@ID) and not(@ID <= following-sibling::userItem/@ID)]")(0)

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

Ответ #2 @saranin 14.09.2011 14:05
Афигеть!!!
Что означает это условие:
 
[not(@ID <= preceding-sibling::userItem/@ID) and not(@ID <= following-sibling::userItem/@ID)] 
???

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

Ответ #3 @Aleksey Nemiro 14.09.2011 14:20
Если текущий ID больше предыдущего (и не равен ему)
И
текущий ID больше следующего (и не равен ему)


preceding-sibling:: - элементы той же ветке, но выше текущей
following-sibling:: - элементы той же ветке, но ниже текущей
<userItem ID="1"> 
 <LastName>Иванов</LastName> 
 <FirstName>Петр</FirstName> 
 <SecondName>Иванович</SecondName> 
 <Position>Менеджер</Position> 
</userItem> 
<userItem ID="2"> 
 <LastName>Петров</LastName> 
 <FirstName>Иван</FirstName> 
 <SecondName>Иванович</SecondName> 
 <Position>Программист</Position> 
</userItem> 
<userItem ID="3"> 
 <LastName>Федоров</LastName> 
 <FirstName>Альберт</FirstName> 
 <SecondName>Петрович</SecondName> 
 <Position>Разработчик</Position> 
</userItem>

<userItem ID="1">
preceding-sibling - нету элемента выше ID=1, т.е. там как бы ноль
following-sibling - ниже идет ID = 2

<userItem ID="2">
preceding-sibling - выше ID = 1
following-sibling - ниже идет ID = 3

<userItem ID="3">
preceding-sibling - выше ID = 2
following-sibling - ниже элемента нету, т.е. там как бы ноль

Если 1 > 0 и 1 > 2, то 1 - ложь
Если 2 > 1 и 2 > 3, то 2 - ложь
Если 3 > 1 и 3 > 0, то 3 - истина

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

Добавить свой ответ в эту тему
Доброго времени суток всем
Есть вопрос:
как добавить комментарий к переменной в тексте программы?

например:
<remark></remark> 
Public TargetSector As WeakReference

чтобы этот комментарий выскакивал в ToolTip-е при наведении на эту переменную мышью?

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

Ответ #1 @Aleksey Nemiro 14.09.2011 11:27
Visual Studio шаблон для xml-комментариев проставляет автоматически, для этого достаточно сразу перед объявлением переменной, свойства, функции или метода набрать (с клавиатуры) три подряд идущих символа комментария ('''). Текст комментария, который отображается в ToolTip-ах должен располагаться в xml-элементе summary.
'''  
Public Var As String
''' <summary> 
''' Эта обычная переменная, которая ничего не делает, как и многие другие :) 
''' </summary> 
Public Var As String
В C#, соответственно, будут слеши - ///

Пояснения к именам параметров функций и методов располагаются в xml-элементах param:
''' <summary> 
''' Эта функция находится здесь просто так, для красоты 
''' </summary> 
''' <param name="param1">Какой-то параметр</param> 
''' <param name="param2">Еще один параметр, зачем он тут нужен, непонятно</param> 
Public Function MyFunction(ByVal param1 As String, ByVal param2 As Boolean) As String 
 Return "Привет мир!" 
End Function

Остальная информация из xml-комментариев отображается только в обозревателе объектов (Ctrl + Alt + J).

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

Ответ #2 @Сергей 14.09.2011 11:43
Алексей, спасибо, но..

данный способ применим только к процедурам и прочим функциям (я так и расставлял комментарии к свойствам)
а к переменной - не работает (данный комментарий виден при наборе имени переменной, но не при наведении на неё мыши)

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

Ответ #3 @Aleksey Nemiro 14.09.2011 11:51
Да, тултипы с xml-комментариями у переменных действительно не отображаются, но в IntelliSense выводятся.

ps: для локальных переменных (в рамках функций, методов) xml-комментарии использовать нельзя, да и в большинстве своем оно и не к чему.

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

Ответ #4 @Сергей 14.09.2011 11:54
Та переменная - уровня модуля (видна отовсюду) вот я и не хочу всё время вспоминать, с какой именно целью она была объявлена.

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

Добавить свой ответ в эту тему
На форме ТextBox и RadioButton. Как написать программу, чтобы при только нажатии RadioButton можно было вписать текст в ТextBox? Помогите начинающему лузеру

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

Ответ #1 @Aleksey Nemiro 13.09.2011 18:54
Блокировать TextBox можно установив свойство Enabled в положение False.
За признак выбранности у RadioButton отвечается свойство Checked.
Соответственно, в событие изменения состояния RadioButton, или нажатия, код может быть таким:
ТextBox.Enabled = RadioButton1.Checked

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

Ответ #2 @semashkinans 13.09.2011 19:03
Добавить свой ответ в эту тему
ПОДСКАЖИТЕ КАК В VB2005 ПОЛУЧИТЬ ДАТУ +7 ДНЕЙ ОТ СЕГОДНЯ


--
Тема изменена администратором.
PS: о ЗАГЛАВНЫХ БУКВАХ есть пунктик в правилах форума.

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

Ответ #1 @Aleksey Nemiro 10.09.2011 17:59
DateAdd(DateInterval.Day, 7, Now)
или
Now.AddDays(7)

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

Ответ #2 @kvb 11.09.2011 12:43
А теперь еще более глупый вопрос- как сделать так, чтобы из текствокса занести данные в ячейку DataGridView, причем в ячейку выбраную кликом

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

Добавить свой ответ в эту тему
В общем проблема такая, есть 3 файла изображений, необходимо их склеить в 1 изображение :)

С графикой и изображениями ни разу в жизни не работал, поэтому вот такие вот затруднения :\

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

Ответ #1 @Aleksey Nemiro 09.09.2011 13:33
Для этого нужно сделать объект типа System.Drawing.Graphics для изображения и нарисовать в нем нужные картинки в нужном месте методом DrawImage. Примерно так:

'картинки, которые нужно объеденить 
Dim img1 As System.Drawing.Image = System.Drawing.Image.FromFile("1.jpg") 
Dim img2 As System.Drawing.Image = System.Drawing.Image.FromFile("2.jpg") 
Dim img3 As System.Drawing.Image = System.Drawing.Image.FromFile("3.jpg") 
 
'Dim g As System.Drawing.Graphics = PictureBox1.CreateGraphics() 
 
Dim bmp As New System.Drawing.Bitmap(500, 500) 'холст размером 500 на 500 пикселей 
Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(bmp) 
 
'рисуем 
g.DrawImage(img1, 0, 0, 100, 100)'x, y, w, h 
g.DrawImage(img2, 100, 100, 50, 50) 
g.DrawImage(img2, 150, 150, 200, 200) 
 
'в последующем bmp можно сохранить или передать куда-нибудь
(код не проверял)

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

Ответ #2 @[i]Pro 10.09.2011 14:39
  Dim pic1, pic2, pic3 As New PictureBox 
  pic1.ImageLocation = image1 
  pic2.ImageLocation = image2 
  pic3.ImageLocation = image3 
 
  Dim bmp As New Bitmap(500, 500)  
  Dim g As Graphics = Graphics.FromImage(bmp) 
 
  g.DrawImage(pic1.Image, 0, 0, pic1.Image.Width, pic1.Image.Height) 
  g.DrawImage(pic2.Image, pic1.Image.Width, 0, pic2.Image.Width, pic2.Image.Height) 
  g.DrawImage(pic3.Image, 0, pic1.Image.Height, pic3.Image.Width, pic3.Image.Height) 
  g.Dispose() 
 
  main.PictureBox1.Image = bmp

Заменил битмапы пикчербоксами, почему то выдает исключение в строке:
g.DrawImage(pic1.Image, 0, 0, pic1.Image.Width, pic1.Image.Height)
В экземпляре объекта не задана ссылка на объект.

Ладно, подставляю к
 Dim g As New Graphics = Graphics.FromImage(bmp)

В ответ куча экспешенов:
End of statement expected.

Негодую в чем вообще дело, думаю навряд ли из-за PictureBox :\

Использую его для загрузки изображений из интернета, знаю что говно код, зато удобно)

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

Ответ #3 @Aleksey Nemiro 10.09.2011 18:53
Заменил битмапы пикчербоксами, почему то выдает исключение в строке:
Наверное в PictureBox нету Image, поэтому и возникает исключение.
End of statement expected.
это вроде как означает, что где-то что-то не закрыто, скобка, условие, функция или еще что.

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

Ответ #4 @[i]Pro 10.09.2011 19:15
Aleksey Nemiro:
Наверное в PictureBox нету Image, поэтому и возникает исключение.

Ага, так и есть, изображения начинали склеиваться до того как загружались из инета, поэтому PictureBox для меня не вариант, придется StreamReader наверное использовать)

Спасибо за помощь :)

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

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

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

Статьи по программированию

Разработка прокси-сервера на C#

Сетевое взаимодействие: C# @Алексей Немиро 12.09.2011 18:16
Прокси-сервера позволяют организовывать передачу данных между клиентами, другими серверами и сетевыми службами. Прокси-сервера можно использовать для распределения доступа в Интернет в локальных сетях, для учета и обработки трафика, для отладки сетевых приложений, да и много еще для чего. В этой статье пойдет речь о создании собственного HTTP прокси-сервера при помощи языка программирования C#, с использованием сокетов.

Читать полностью

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

Все статьи по программированию

Вакансии в IT

ПРОГРАММИСТ

Россия, Москва | Работа в офисе | 30 000.00 RUB

Разработчик SharePoint

Россия, Москва | Работа в офисе | 90 000.00 RUB

Ведущий JAVA разработчик

Россия, Москва | Работа в офисе | 160 000.00 RUB

Ведущий Flash программист

Россия, Москва | Работа в офисе | 120 000.00 RUB

Программист

Россия, Москва | Работа в офисе | 30 000.00 RUB

Программист . NET (C#)

Россия, Москва | Работа в офисе | 60 000.00 RUB

Ведущий разработчик . NET (C#)

Россия, Москва | Работа в офисе | 80 000.00 RUB

Программист / Разработчик ПО

Россия, Москва | Работа в офисе | 85 000.00 RUB

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

Россия, Москва | Работа в офисе | 60 000.00 RUB

Программист-электронщик

Россия, Москва | Работа в офисе | 40 000.00 RUB

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

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

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

Intel и McAfee работают над низкоуровневой системой ИТ-защиты DeepSafe

Спустя примерно семь месяцев после покупки корпорацией Intel антивирусного разработчика McAfee две компании готовятся представить первые плоды их совместной работы на ниве обеспечения ИТ-безопасности. В рамках открывшегося сегодня в Сан-Франциско форума Intel Developer Forum McAfee презентует первую совместную с Intel разработку, которая обеспечивает защиту компьютера от ИТ-угроз, работая за пределами операционной системы.

Новая система, получившая название DeepSafe, использует низкоуровневые разработки Intel и программное решение McAfee Endpoint Protection, чтобы "наилучшим образом исследовать вредоносное программное обеспечение". Кендес Уорли, старший вице-президент и генеральный менеджер McAfee Endpoint Security, говорит, что DeepSafe представляет собой новый на рынке антивирусных решений продукт. По ее словам, он использует уровень технологий, ранее не доступный антивирусным продуктам.

"DeepSafe представляет собой ответ McAfee на новейшие хакерские технологии, которые становится все труднее обнаружить традиционными средствами детектирования, в результате чего все чаще возникают ситуации, когда вредоносное ПО остается незамеченным на полностью защищенном компьютере", - говорит Уорли. "Большинство антивирусов сейчас работают на том же уровне, что и операционная система. Мы все чаще убеждаемся в том, что многие антивирусы просто не видят руткиты, установленные на системном уровне".

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

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

Sony анонсировала плеер Walkman Z на базе ОС Android

Sony сегодня официально представила подробности о первом Android-плеере Walkman, продажи которого стартуют с 10 декабря этого года в Японии. Новинка будет поставляться в емкости 16, 32 и 64 гигабайта.

Согласно описанию компании, плееры Sony Walkman Z будут поставляться с гигагерцевыми двухъядерными процессорами Nvidia Tegra 2, 512 мегабайтами ОЗУ и операционной системой Android 2.3. Однако одним из главных моментов этого плеера станет крупный 4,3-дюймовый сенсорный ЖК-экран с разрешением 480x800 пикселей. Продаваться устройство будет в трех цветовых конфигурациях - черном, красном и фиолетовом. 

Среди аппаратных функций плеера модно выделить поддержку целого спектра портов - mini-HDMA, DLNA, WM-Port/Mini-USB, а также беспроводной связи WiFi 802.11 b/g/n и Bluetooth со спутниковой навигацией GPS. Как говорят в Sony подобные возможности устройству нужны, чтобы оно могло качественно работать с Android Market и программами/играми, присутствующими там. В Sony заверяют, что у Walkman Z будет полноценный доступ к онлайн-каталогу.

14.09.2011 11:16 · Категория: Железо · Источник: CyberSecurity.ru

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

Регистрация в белых каталогах с 10% скидкой

Пользователи Kbyte.Ru теперь имеют возможность регистрировать свои сайты в белых каталогах через сервис нашего партнера 1PS.RU с 10% скидкой!

Добавление сайта в каталоги позволит повысить его позиции в поисковых системах и увеличить посещаемость.

 

Если вы уже давно имеете учетную запись на нашем сайте, то вы можете ознакомиться с условиями акции и получить промо-код на следующей странице: http://kbyte.ru/ru/promo/ps.aspx

 

Если вы еще не зарегистрированы на Kbyte.Ru, то зарегистрируйтесь, это несложно и абсолютно бесплатно.

 

Или вы можете пройти специальный SEO-тест, где в качестве подарку вам будет предоставлена скидка. Тест расположен по адресу: http://kbyte.ru/ru/Tests/Show.aspx?id=16

 

Если у вас возникнут какие-либо вопросы или предложения, пишите нам.

13.09.2011 19:29 · Категория: Новости Kbyte.Ru · Источник: Kbyte.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 если иное не указано отдельно.


В избранное