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

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


Выпуск # 709

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


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

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

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

Форумы Kbyte.Ru

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

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

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

При написании ActiveX контрола столкнулся с такой проблемой. Необходимо создавать (и удалять) элемент
Line во внешнем по отношению к UserControl контейнере типа PictureBox или Form.
Имя контейнера передается в метод UserControla аргументом As Object.
При этом возникает ошибка, что Picture1 (к примеру) не является подходящим объектом для этого.
Подскажите, пожалуйста, как это можно сделать.

Код формы:

MyGrid1.GridShow Picture1


Код UserControl :

Public
Sub GridShow(objDraw As Object)
  Dim Ln As Line
  Set Ln = Controls.Add("VB.Line", "Ln", objDraw)  'Здесь ошибка


Ошибка только при создании элемента, текст и графику выводит правильно.

Спасибо.

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

Мы приглашаем вас, принять участие в нашем исследовании «Управление ПО- ресурсами компании». Результаты исследования будут обработаны нами и высланы каждому участнику опроса http://www.rb.ru/research/software/

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

Привет всем .Вопрос Как сделать тоже самое только с ТекстБоксом
  For i = 0 To ListBox1.Items.Count - 1
            Split(i)
           If i = ListBox1.Items.Count - 1 Then
             MsgBox
Смысл такой В текстбоксе залил список ссылок в линюю.Хочу чтоб они закачивались (с помощью HttpWebRequest) в папку поочереди или все вместе..
Может есть какой способ лучше ? То подскажите и это..
СПАСИБКИ...

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

Ответ #1 @Алексей Немиро 10.12.2012 14:26
Если каждая ссылка на своей строке, то так:
For i As Integer = 0 To TextBox1.Lines.Length - 1
  MsgBox(TextBox1.Lines(i))
Next
или
For Each line As String In TextBox1.Lines
  MsgBox(line)
Next

Если ссылки в тексте как попало, то извлечь их можно при помощи регулярных выражений:
Dim myReg As New System.Text.RegularExpressions.Regex("(?<Protocol>\w+):\/\/(?<Domain>[\w@][\w.:@]+)\/?[\w\.?=%&=\-@/$,]*")
Dim mc As System.Text.RegularExpressions.MatchCollection = myReg.Matches(TextBox1.Text)
For i As Integer = 0 To mc.Count - 1
  MsgBox(mc(i).Value)
Next
'или
'For Each m As System.Text.RegularExpressions.Match In mc
'  MsgBox(m.Value)
'Next

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

Ответ #2 @i32 10.12.2012 15:14
Первое подходит..Второе на заметку возьму..Просто ссылка еще в текстбоксе не сформирована.Буду формировать при запросе..
Спасибки..

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

Добавить свой ответ в эту тему
Доброго времени суток. Пользуюсь классом от Алексея(мало ли поможет скорейшему ответу)
Пытаюсь сделать скрипт опроса. В бд имею столбцы -id title 1var 2var
Скрипту передаются параметры vote.php?vote_id=2&vote_var=1
Вобще все глючит и делать не хочет. Даже тяну сколько каждого параметра значений, но он их складывать даже не хочет. помогите пожалуйста, уже не знаю что делать. вот код:
<?
$vote_id=$_GET['vote_id'];
if(empty($vote_id) || is_numeric($vote_id)==FALSE){die('where is id?');}
$vote_var=$_GET['vote_var'];
if(empty($vote_var) || is_numeric($vote_var)==FALSE){die('where is variant?');}

include_once "/home/u605145556/public_html/beta/databasefrom.php";

$MySql = new MySql();


$r = $MySql->GetRow("SELECT * FROM `votes` WHERE ". $vote_id);
if ($r != NULL)
{
//echo $r["1var"]; // сколько 1 голосов
//echo $r["2var"]; // сколько 2 голосов
if($vote_var==1){$var1=$r["1var"]+1;$var2=$r["2var"];}
if($vote_var==2){$var2=$r["2var"]+1;$var1=$r["1var"];}
}
else
{
die('Ошибка при голосовании. Данного опроса скорее всего не существует.');
}

//меняем значение опроса
$result = $MySql->ExecuteScalar("UPDATE `votes` SET `1var`='$var1',`2var`='$var2' WHERE id='$vote_id'");

if($result > 0){

 echo "Спасибо за ваш голос!";
}
else {
 echo "Ошибка: ".$MySql->errorMessage;
}

?>

	

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

Ответ #1 @Алексей Немиро 09.12.2012 22:08
Сложение на уровне Sql можно сделать. Числа не должны быть в кавычках.
$result = $MySql->ExecuteScalar("UPDATE `votes` SET `1var` = `1var` + $var1,`2var`=`2var` + $var2 WHERE id=$vote_id");

PS: Имена полей и перменных лучше не начинать с числа, с этим могут быть проблемы.

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

Ответ #2 @artF 09.12.2012 22:29
PS: Имена полей и перменных лучше не начинать с числа, с этим могут быть проблемы
Да..теперь знаю, столкнулся с этим когда переменные так назвал =)
Но все равно ошибка! не делает что надо.
Код:
<?
$vote_id=$_GET['vote_id'];
if(empty($vote_id) || is_numeric($vote_id)==FALSE){die('where is id?');}
$vote_var=$_GET['vote_var'];
if(empty($vote_var) || is_numeric($vote_var)==FALSE){die('where is variant?');}

include_once "/home/u605145556/public_html/beta/databasefrom.php";

$MySql = new MySql();


if($vote_var==1){$var1=1;$var2=0;}
if($vote_var==2){$var2=1;$var1=0;}

//меняем значение опроса
$result = $MySql->ExecuteScalar("UPDATE `votes` SET `var1` = `var1` + $var1,`var2`=`var2` + $var2 WHERE id=$vote_id");

if($result > 0){

 echo "Спасибо за ваш голос!";
}
else {
 echo "Ошибка: ".$MySql->errorMessage;
}

?>
в результате возвращает только

Ошибка:
в чем проблема?
P.S колонки переименовал в бд. теперь они var1 и var2

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

Ответ #3 @artF 09.12.2012 23:27
Понял в чем. $result возвращает 0, хотя обновление проходит. вопрос тогда такой- как обработать ошибку?

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

Ответ #4 @Алексей Немиро 10.12.2012 10:50
Да, ExecuteScalar только для INSERT запросов при условии, что в таблице запроса числовой счетчик.

Если запрос выполнен успешно, то сообщение об ошибке будет пустым: if($MySql->errorMessage!=""){echo "ошибка:".$MySql->errorMessage;}

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

Ответ #5 @artF 10.12.2012 19:44
Благодарю за помощь!)
P.S рассылка по почте спалила что сообщение выше отредактировано :D
if($this->errorMessage!=""){echo "ошибка";}
а то уж было хотел спросить что за $this

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

Добавить свой ответ в эту тему · В теме есть еще 6 ответов. Смотреть все ответы.
Привет всем .Вопрос возник такой. Не получается создать большое количество файлов.Создается только ОДИН.
 Dim intI As Integer
        intN = Val(3)
        For intI = 1 To 3
            Dim path As String = "c:\aaa.key"
            Dim fs As FileStream = File.Create(path)

            ' Add text to the file.
            Dim info As Byte() = New UTF8Encoding(True).GetBytes("KLsw'")
 fs.Write(info, 0, info.Length)
            fs.Close()
        Next intI
    End Sub
Возможно причина в название - одинакогом . Как это избежать?Спасибо..

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

Ответ #1 @Алексей Немиро 07.12.2012 19:31
Естественно, создать в одном каталоге множество файлов с одним именем не получится :)
Имена должны быть разными.

В случае с циклом, код формирования имени файла может быть таким:
Dim path As String = String.Format("C:\{0}.key", i)

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

Ответ #2 @i32 07.12.2012 19:47
Понятно - в курил тоже сам..
Dim path As String = ("C:\" & Format(Now, "dd.MM.%y") & "\aaa" & intI & ".key")
Кстате в твоем случае наверно файлы получатся без формата (наверно)

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

Добавить свой ответ в эту тему
Использую VB 2010 and data base on the other server.
В первой строке app.config записано encoding=utf-8.
Проблема в записи не латиницы:
1. если пишу прямо в базу данных или в GridView использую Edit -> Update, или использую выполнить запрос в построителе запросов (в DataSet), то всё нормально.
2. Но если для INSERT использую TextBox, то в базу данных записываются вопросы.

Что ещё можно проверить, куда копать? Заранее спасибо.
Михаил.

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

Ответ #1 @Алексей Немиро 07.12.2012 11:39
Код в студию!

Если запрос добавления данных из TextBox имеет вид, типа:
Dim cmd As New SqlCommand()
cmd.CommandText = "INSERT INTO table1 (text) VALUES ('" & TextBox1.Text & "') "
То проблема скорей всего в таком неправильном методе формирования запроса. Должно быть примерно так:
Dim cmd As New SqlCommand()
cmd.CommandText = "INSERT INTO table1 (text) VALUES (@text) "
cmd.Parameters.Add("@text", SqlDbType.NVarChar).Value = TextBox1.Text


Также проблема может быть в базе. Тип данных полей для юникода должен быть: nvarchar, nchar, ntext.

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

Ответ #2 @mig 07.12.2012 18:21
Алексей! Спасибо за ответ. Смогу проверить только в воскресенье. В своё оправдание должен сказать, что команда форммируется в среде VB, i.e DataSet => DataAdapter => Insert, Delete, Update. Или я использую построитель запросов в этом DataSet и проверяю этот запрос, не выходя из DataSet, то всё в порядке. Ещё раз большое спасибо.
Михаил.

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

Подскажите­ пожалуйста­, как закрыть без удаления exe-файл, например, А.exe, после того,
> как он был открыт из другого скомпилиро­ванного в VB6 exe-файла ?hhttp://kbyte.ru/ru/Forums/Add.aspx?id=0#kbemain_textttp://kbyte.ru/ru/Forums/Add.aspx?id=0#kbemain_text

> Private Sub Command1_Click()

> Shell "d:/A.exe", vbNormalFocus

> End Sub

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

Ответ #1 @Алексей Немиро 04.12.2012 15:56
Вариант 1:
Shell "tskill A.exe"
или
Shell "cmd /x/c
taskkill /f /im A.exe", vbHide

Вариант 2:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, ByRef lpdwProcessId As Long) As Long
Private Declare Function OpenProcess Lib "Kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
Private Declare Function CloseHandle Lib "Kernel32" (ByVal hObject As Long) As Long
Private Declare Function TerminateProcess Lib "Kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Const SYNCHRONIZE = &H100000
Private Const PROCESS_TERMINATE As Long = &H1

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_CLOSE As Long = &H10
'ищем процесс по имени
Dim target_hwnd As Long

target_hwnd = FindWindow(vbNullString, "A.exe")
If target_hwnd = 0 Then
  MsgBox "Процесс не найден..."
  Exit Sub
End If

'закрываем найденный процесс
PostMessage target_hwnd, WM_CLOSE, 0, 0

MsgBox "Процесс успешно закрыт!"

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

Добавить свой ответ в эту тему
Datagrid SUM @rusiko 04.12.2012 09:29
Привет всем. Подскажите пожайлуста как в Visual Basic 2010 сделать так чтоб в datagrid суммировать данные столбцов. То есть например в datagrid есть столбец "покупка" и столбец "продажа" как сделать чтоб в столбце "итог" показывалась сумма столбцов "покупка" и "продажа". А в конце стобца "итог" показывалась сумма "итог". В качестве БД использую SQL Server 2008. Пробовал сделать это в Computed Column Specifications в SQL используя (formula), но не получилось. Спасибо всем!!!

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

Ответ #1 @Алексей Немиро 04.12.2012 11:45
SELECT SUM(имя колонки) FROM имя таблицы

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

Добавить свой ответ в эту тему
Друзья, сегодня Kbyte.Ru полностью перенесен на новый, более мощный, сервер!

Если вы заметите какие-либо глюки в работе сайта, может что-то потерялось или напротив появилось лишнее, пожалуйста, сообщите об этом либо мне на почту: admin@kbyte.ru, либо в этот топик.

Переезд коснулся всех проектов, включая foxtools.ru, yolper.ru

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

Ответ #1 @Алексей Немиро 02.12.2012 14:38
Это проверка отправки уведомления на e-mail о поступлении новых ответов на форум.

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

Ответ #2 @Алексей Немиро 03.12.2012 17:56
IIS и SQL Server старого сервера сегодня полностью остановлены.

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

Добавить свой ответ в эту тему
При создании PictureBox в vb.net 10 в событии PictureBox1_MouseMove e.X показывает определённое значение заданное системой при перемещении мышкой (от 0 до 565 по Х). Мне нужно изменить координатную сетку внутри контейнера PictureBox1, то есть чтобы было от 0 до 100 (по Х от левого края до правого). В VB6 помню можно было это изменить с помощью scale(0,0)-(100,100), а как здесь?

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

Ответ #1 @Shark1 03.12.2012 20:53
Думаю, что самое простое решение выглядит примерно так :

Public Class
Form1

    Dim myX As Integer
    Dim myY As Integer

    Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        myX = e.X \ 5     
        myY = e.Y \ 5
        Me.Text = myX & "X" & myY
    End Sub
End Class

 ' при размере PictureBox 505 на 505 как раз и получается от 0 до 100.

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

Ответ #2 @Александр 04.12.2012 17:27
Спасибо, получается если я разверну форму и PictureBox1 увеличится в размерах, нужно новое деление придумыввать? При помощи scale никак?

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

Ответ #3 @Алексей Немиро 04.12.2012 18:10
Public Class Form1

  Private _X, _Y As Integer

  Private _Cells As Integer = 10 'максимальное число клеток

  Private _CellSizeWidth, _CellSizeHeight As Integer 'ширина и высота одной клетки

  Private Sub Form1_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
    _X = (e.X \ _CellSizeWidth)
    _Y = (e.Y \ _CellSizeHeight)
    Me.Text = String.Format("{0}x{1}", _X, _Y)
    'перерисовываем сетку
    Me.Refresh()
  End Sub

  Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    'рисуем стеку
    'это правильней делать и линиями, но квадратики проще понять :)
    For x As Integer = 0 To _Cells - 1
      For y As Integer = 0 To _Cells - 1
        If _X = x AndAlso _Y = y Then
          'если x и y равен x и у выбранной клетки, рисуем синий квадратик
          e.Graphics.FillRectangle(Brushes.Blue, x * _CellSizeWidth, y * _CellSizeHeight, _CellSizeWidth, _CellSizeHeight)
        Else
          'если нет, рисуем пустой квадратик
          e.Graphics.DrawRectangle(Pens.Black, x * _CellSizeWidth, y * _CellSizeHeight, _CellSizeWidth, _CellSizeHeight)
        End If
      Next
    Next
  End Sub

  Private Sub Form1_Resize(sender As Object, e As System.EventArgs) Handles Me.Resize
    'определяем размер клетки
    _CellSizeWidth = (Me.ClientSize.Width * 1) / _Cells
    _CellSizeHeight = (Me.ClientSize.Height * 1) / _Cells
    'перерисовываем сетку
    Me.Refresh()
  End Sub

  Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Me.DoubleBuffered = True 'двойная буфферизация, чтобы исключить мерцанире при прорисовке клеток
  End Sub

End Class

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

Ответ #4 @Александр 04.12.2012 19:32
Алексей Немиро поясните ваш рисунок.

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

Ответ #5 @Александр 04.12.2012 19:35
Увидел файл

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

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

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

Вакансии в IT

Программист c/c++

Россия, Москва | Работа в офисе | 90 000,00 KBP

Ведущий инженер-программист SCADA

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

Разработчик отчетных форм

Россия, Москва | Работа в офисе | 50 000,00 KBP

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

Россия, Москва | Работа в офисе | 38 000,00 KBP

Программист C/C++, Java

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

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

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

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

Россия, Москва | Работа в офисе | 90 000,00 KBP

Дизайнер-программист машинной вышивки

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

Программист Delphi, SQL

Россия, Москва | Работа в офисе | 100 000,00 KBP

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

Россия, Москва | Работа в офисе | 50 000,00 KBP

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

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

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

Управление ПО-ресурсами компании

SoftLineЛюбой профессионал, управляющий ИТ-ресурсами компании, знает, как важно не только планирование, но и учет имеющихся программных и аппаратных средств. В частности, управление ресурсами программного обеспечения в компании как активами – тема важная, но не всегда однозначная. Управление ПО как активами приводит к вопросам управления лицензиями, готовности компании к различным аудитам, в том числе, аудитам правообладателей. Мы решили исследовать, как обстоит с этим дело в российских и международных компаниях, как организационно и стратегически решаются эти вопросы, поэтому приглашаем вас, профессионалов, принять участие в нашем исследовании «Управление ПО-ресурсами компании». Результаты исследования будут обработаны нами и высланы каждому участнику опроса.

 

Принять участие в исследовании: http://www.rb.ru/research/software/

13.12.2012 15:05 · Категория: Бизнес в IT · Источник: Kbyte.Ru

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

Intel выпустит 22-нанометровый мобильный чип

Intel в 2013 году начнет серийно производить процессоры для смартфонов и планшетов по 22-нанометровому технологическому процессу. Современные чипы компании выпускаются по 32-нанометровому техпроцессу. По быстродействию новые процессоры будут на 22-65 процентов превосходить старые.

13.12.2012 12:10 · Категория: Железо · Источник: Lenta.ru

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

Названы российские цены на iPad mini

Сеть re:Store, авторизованный реселлер Apple в России, сообщила, что начнет продажи iPad mini 14 декабря в 18:00. Планшет с Wi-Fi будет стоить от 14990 до 22990 рублей в зависимости от объема памяти. Аппарат с сотовым модулем поступит в магазины позже; цена на него пока не известна.

13.12.2012 12:09 · Категория: Железо · Источник: 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 если иное не указано отдельно.


В избранное