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

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


Выпуск # 639

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


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

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

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

Форумы Kbyte.Ru

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

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

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

Ответ #1 @Мадина 21.04.2011 21:39
Макрос устанавливащий расстановку переносов во фрагменте текста

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

Ответ #2 @Мадина 21.04.2011 21:40
Добавить свой ответ в эту тему
Здлравствуйте еще раз) Я хотел бы узнать, как проще всего пожно сделать программу для накрутки голосов на каком-либо сайте?) Просто недавно пытался сделать импровизацией, нихрена не получается) сколько бы мне ни подсказывали - я не допер:)

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

Ответ #1 @Aleksey Nemiro 21.04.2011 16:57
Проще всего подумать о том, как убедить людей голосовать, а не заниматься фальсификацией. Тем более что в УК РФ есть статейка на эту (или почти на эту) тему.

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

Ответ #2 @Zveriko 21.04.2011 17:07
Это, конечно, да, но я не думаю, что мне удастся уговорить за день 4000 человек:)

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

Добавить свой ответ в эту тему
Добрый день. Вопрос следующий:
Есть страница, на которой в GridView выводятся результаты селекта из базы.

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"  
            DataSourceID="SqlDataSource1" CellPadding="3" Font-Size=Smaller ForeColor="#333333"  
            GridLines="None" > 
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
            <Columns> 
             <asp:hyperlinkfield text="Ввод" ItemStyle-Width="20px" 
           navigateurl="~\Vvod.aspx"             
           headertext="Ввести причину" 
           target="_blank" /> 
                <asp:BoundField DataField="A" HeaderText="Номер Вагона" SortExpression="A" ItemStyle-Width="20px"  />

Необходимо, чтобы при щелчке по записи, данные ( значение столбца А) передавались на другую страницу (Vvod.aspx) в
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
и устанавливалось там видимым юзеру.

Как видно из кода, я специально создал поле со ссылкой... вот как мне написать, чтобы передавалось не фиксированное значение параметра (а-ля ,
 <asp:hyperlinkfield text="Ввод" ItemStyle-Width="20px" 
           navigateurl="~\Vvod.aspx?id_vag=5"             
           headertext="Ввести причину" 
           target="_blank" />
)
А именно значение поля
<asp:BoundField DataField="A" HeaderText="Номер Вагона" SortExpression="A" ItemStyle-Width="20px"  />

Заранее благодарен

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

Ответ #1 @CAPT 21.04.2011 10:00
Вопрос снимается. Сам сообразил.
<asp:hyperlinkfield text="Ввод" 
           datatextformatstring="{0:c}" 
           datanavigateurlfields="A" 
           datanavigateurlformatstring="~\Vvod.aspx?id_vag={0}"           
           headertext="Ввод" 
           target="_blank" />


ну и собственноно в VB-шном файличке

 
Partial Public Class Vvod 
    Inherits System.Web.UI.Page 
 
    Protected WithEvents TextBox1 As Global.System.Web.UI.WebControls.TextBox 
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
        TextBox1.Text = Request("id_vag") 
    End Sub 
 
End Class 

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

Добавить свой ответ в эту тему
Приветствую!

По работе, периодически попадаются веб-страницы с артефактами в тексте в виде символов вопросов.
Чтобы было понятно о чем речь, приведу небольшой скриншот:


Проблема встречается при использовании кодировки UTF-8. Поскольку я работаю чаще всего с ASP .NET, то и подобные косяки ловлю в нем же.
В web.config кодировка прописана верная:
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" culture="ru-RU" uiCulture="ru-RU"/>
на страницах ASP .NET, аналогично, прописана кодировка в мета-тегах:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
HTTP-заголовки от сервера приходят верные. Если смотреть через Fiddler, то артефактов в тексте нет.

Файлы страницы сохранены с использованием Юникод (UTF-8) кодовая страница 65001, хотя замена на 1200 кодовую страницу ни к чему не приводит.

Примечательно, появление артефактов чаще всего проявляется в FireFox, Opera 11, Chrome и, после выхода, в IE 9 (в IE 7, 8 мне подобное не попадалось).
Также, проблема проявляется на IIS, а на встроенном в Visual Studio веб-сервере, подобных косяков я не встречал.

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

Кто сталкивался с подобным? В чем может быть причина? В неверной обработке Юникода браузерами или же проблема в IIS? Хотя если в IIS, то видимо проблема была бы видна и в Fiddler, но это наверное зависит от того, как Fiddler обрабатывает Юникод.

Возможно, проблема проявляется при многократном конвертировании разных кодировок, например при обычном копи-пастинге. Хотя я проверял эту теорию, но не наше ей подтверждения.

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

И еще раз извините возникло сразу еще одно затруднение!

У меня в ListBox Items добавляются программно после PostBack, они все исчезают (что не удивительно)!

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

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

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

Ответ #1 @Edlin 20.04.2011 10:45
А у тебя ViewState у ListBox включен? Где именно добавляются Items? Присылай код.

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

Ответ #2 @Артем 20.04.2011 14:59
Нашел у ListBox свойство ViewStateMode = Inherit это оно?

Так как мой ListBox журнал событий то Items добавляются практически по всему коду, при каждом событии!!!

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

Ответ #3 @Aleksey Nemiro 21.04.2011 12:17
Если список намеренно не очищается, то по умолчанию, все добавленные в него данные через вызовы к серверу должны сохраняться.
Нужно проверить EnableViewState у страницы, контрола, контейнера, в котором находится контрол (ListBox), возможно ViewState отключен намерено.

Чтобы понять в чем причина - aspx, cs в студию!

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

Ответ #4 @Артем 21.04.2011 18:42
Ну у всех элементов EnableViewState="true" а ViewStateMode="Inherit"

а код вот здесь

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

Ответ #5 @Aleksey Nemiro 21.04.2011 20:09
а код вот здесь
У меня данные из ListBox-а не пропадают в этом коде.
Хотя я смотрел без клиентских скриптов, видимо причина в них, в таком винегрете проблемы на ровном месте будут в любом случае.

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

Добавить свой ответ в эту тему · В теме есть еще 7 ответов. Смотреть все ответы.
Здравствуйте:):):) У меня очередное затруднение, помогите пожалуйста!:)
Я поверяю ввод в форму (только дробные числа), для этого использую RegularExpressionValidator в котором прописал [0-9]*[.]?[0-9]*. Проверку вызывает кнопка у нее CausesValidation="True" (по умолчанию), все остальные кнопки на форме я настроил: CausesValidation="False". В обработчики, кнопки которая вызывает проверку, у меня есть условие:

if (!IsValid) 
      { 
        //Бла бла бла 
        return; 
      }
При не правильном заполнении формы оно у меня не срабатывает:(:(:(
А если заменяю if (!IsValid) на if (IsValid), срабатывает, но мне так не надо!!!

Что я делаю не так?

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

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

Ответ #1 @Edlin 20.04.2011 10:43
Может быть ты не правильно прописал регулярное выражение. Попробуй заменить на ^[0-9]*[.]?[0-9]*$. И пришли код из aspx-файла, где указаны свойства валидатора.

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

Ответ #2 @Артем 20.04.2011 14:53
Попробовал, не помогло :( Вот код разметки:
 <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"  
                    ControlToValidate="Freq" ErrorMessage="Не верный формат введенного значения частоты"  
                    ValidationExpression="^[0-9]*[.]?[0-9]*$" Display="None"></asp:RegularExpressionValidator>


А вот код обработчика кнопки:

protected void Button6_Click(object sender, EventArgs e) 
        { 
            if (Freq.Text == "") 
            { 
                ErrorLog.Items.Add(DateTime.Now + "  " + "Введите значение частоты"); 
                ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
                UpdatePanel2.Update(); 
                return; 
            } 
            if (!IsValid) 
            { 
                ErrorLog.Items.Add(DateTime.Now + "  " + RegularExpressionValidator1.ErrorMessage); 
                ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
                UpdatePanel2.Update(); 
                return; 
            } 
            Client.ControlFrequency(MaxFrequency, Freq.Text, (byte)id.IdDevice, (byte)id.IdControlFrequency); 
            ErrorLog.Items.Add(DateTime.Now + "  " + Client.GetError + " [Запись частоты]"); 
            ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
            UpdatePanel2.Update(); 
            Freq.Text = ""; 
        }

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

Ответ #3 @Aleksey Nemiro 21.04.2011 12:06
Вот код разметки:
Чтобы понять, почему не работает, нужен весь код страницы.

Возможно у кнопки (Button6) прописан ValidationGroup, а у приведенного валидатора - нет.
А вот код обработчика кнопки:
if (Freq.Text == "")
Для подобных случаев существует RequiredFieldValidator.

У каждого валидатора есть свойство IsValid, аналогичное свойству Page.IsValid, т.е. если нужно записать сообщения об ошибках из валидаторов, достаточно проверить у каждого из них это свойство. Кстати, я по-моему уже приводил пример, о том как можно пролистать все элементы управления. Так вот, валидаторы наследуются от System.Web.UI.WebControls.BaseValidator и их можно проверить циклом:
foreach (Control c in UpdatePanel1.ContentTemplateContainer.Controls) 
{ 
  if (c.GetType().BaseType == typeof(System.Web.UI.WebControls.BaseValidator)) 
  { 
    if (((System.Web.UI.WebControls.BaseValidator)c).IsValid) 
    { 
      // прошел проверку 
    } 
    else 
    { 
      //не прошел проверку 
      //((System.Web.UI.WebControls.BaseValidator)c).ErrorMessage 
    } 
  } 
}
Чтобы не писать множество условий.

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

Ответ #4 @Артем 21.04.2011 16:12
У меня всего один валидатор, я думаю цикл не нужен:) Я пробовал вместо Page.IsValid ставить RegularExpressionValidator.IsValid ничего не меняется на true срабатывает на false нет!!!

ValidationGroup у меня нигде не прописан!

Вот код странички на которой я тренируюсь:):):) я еще тему с графиками поднимал может помните, возможно вы увидите как ее можно решить здесь (график рисуется в контейнере id = "container") :)

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EL_Page.aspx.cs" Inherits="ajax.EL_Page" 
    MaintainScrollPositionOnPostback="true" %> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"> 
        <Scripts> 
            <asp:ScriptReference Path="~/JS/jquery-1.5.2.js" /> 
            <asp:ScriptReference Path="~/JS/highcharts.src.js" /> 
            <asp:ScriptReference Path="~/JS/JS1.js" /> 
        </Scripts> 
    </asp:ScriptManager> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
        <ContentTemplate> 
            <asp:Timer ID="Timer1" runat="server" Interval="600" OnTick="Timer1_Tick"> 
            </asp:Timer> 
            <table cellpadding="0"> 
                <tr> 
                    <td colspan="2" align="center"> 
                        Параметры частотного преобразователя 
                    </td> 
                </tr> 
                <tr> 
                    <td> 
                        Цифровое управление частотой 
                    </td> 
                    <td align="center"> 
                        <asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0"> 
                            <asp:View ID="View1" runat="server"> 
                                <asp:Image ID="Image1" runat="server" Height="23px" ImageUrl="~/Imag/knopka4.gif" 
                                    Width="23px" /> 
                            </asp:View> 
                            <asp:View ID="View2" runat="server"> 
                                <asp:Image ID="Image2" runat="server" Height="23px" ImageUrl="~/Imag/knopka5.gif" 
                                    Width="23px" /> 
                            </asp:View> 
                        </asp:MultiView> 
                    </td> 
                </tr> 
                <tr> 
                    <td> 
                        Выходная частота 
                    </td> 
                    <td> 
                        <asp:TextBox ID="TextBox1" runat="server" BorderColor="#666666"  
                            Borderstyle=""Inset"" BorderWidth="3px" Width="65px"></asp:TextBox> 
                    </td> 
                </tr> 
                <tr> 
                    <td> 
                        Выходная частота 
                    </td> 
                    <td align="center"> 
                        <asp:Label  ID="Label18" runat="server" BorderColor="#666666"  
                            Borderstyle=""Inset"" BorderWidth="3px" Font-Bold="True" Font-Names="Arial"  
                            Font-Size="12pt" Height="18px" Width="65px"></asp:Label> 
                    </td> 
                </tr> 
            </table> 
            <asp:Label ID="Label1" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label2" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label3" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label4" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label5" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label6" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label7" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label8" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label9" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label10" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label11" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label12" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label13" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label14" runat="server"></asp:Label> 
            <br /> 
            <asp:Label ID="Label15" runat="server"></asp:Label> 
        </ContentTemplate> 
    </asp:UpdatePanel> 
    <br /> 
    <asp:UpdatePanel ID="UpdatePanel3" runat="server" UpdateMode="Conditional"> 
        <ContentTemplate> 
            <asp:Button ID="Button2" runat="server" Text="Старт" OnClick="Button2_Click" Width="47px" 
                CausesValidation="False" /> 
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            <asp:Button ID="Button3" runat="server" Text="Стоп" OnClick="Button3_Click" CausesValidation="False" /> 
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            <asp:Button ID="Button4" runat="server" Text="Реверс" OnClick="Button4_Click" CausesValidation="False" /> 
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            <asp:Button ID="Button5" runat="server" Text="Сброс ошибок" OnClick="Button5_Click" 
                Width="97px" CausesValidation="False" /> 
            <br /> 
            <br /> 
            <asp:TextBox ID="Freq" runat="server" Height="20px" style=""margin-left:" 36px" Width="36px" 
                Wrap="False"></asp:TextBox> 
            <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="Freq" 
                ErrorMessage="*" ValidationExpression="^[0-9]*[.,]?[0-9]*$"></asp:RegularExpressionValidator> 
            &nbsp;<asp:Button ID="Button6" runat="server" Text="Задать частоту" OnClick="Button6_Click" 
                Width="97px" /> 
            &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<asp:Button ID="Button1" runat="server" CausesValidation="False" 
                OnClick="Button1_Click" Text="Button" /> 
            &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<asp:Button ID="Button7" runat="server" Text="Button" 
                OnClick="Button7_Click" CausesValidation="False" /> 
            &nbsp;&nbsp;&nbsp;&nbsp; 
            <asp:Button ID="Button9" runat="server" Text="Button" OnClick="Button9_Click" CausesValidation="False" /> 
            <asp:Label ID="Label17" runat="server" Text="Label"></asp:Label> 
        </ContentTemplate> 
    </asp:UpdatePanel> 
    <br /> 
    <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="False"> 
        <ContentTemplate> 
            <asp:ListBox ID="ErrorLog" runat="server" Rows="5" Width="600px"></asp:ListBox> 
            <br /> 
        </ContentTemplate> 
    </asp:UpdatePanel> 
    <asp:UpdatePanel ID="UpdatePanel4" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="True"> 
        <ContentTemplate> 
            <asp:Panel ID="container" runat="server" style=""width:" 50%; height: 400px"> 
            </asp:Panel> 
            <asp:Label ID="Label16" runat="server" Text="Label"></asp:Label> 
        </ContentTemplate> 
    </asp:UpdatePanel> 
    <asp:Button ID="Button8" runat="server" OnClick="Button8_Click" style=""margin-left:" 925px" 
        Text="Назад" CausesValidation="False" /> 
    </form> 
</body> 
</html> 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
 
namespace ajax 
{ 
    public partial class EL_Page : System.Web.UI.Page 
    { 
        static EL Client; 
        const float MaxFrequency = 50; 
        string StatusDevice; 
        string RotationDirections; 
        string ControlFrequencyOnRS485; 
        string ControlFrequencyOnAnalog; 
        string ControlDeviceOnRS485; 
        data Param; 
 
        protected void Page_Init(object sender, EventArgs e) 
        { 
            Param = new data(); 
            if (!IsPostBack) 
            { 
                Client = new EL(); 
                if (!Client.ConnectSocket()) 
                { 
                    ErrorLog.Items.Add(DateTime.Now + "  " + Client.GetError); 
                    ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
                    Timer1.Enabled = false; 
                    Param.YValue(0); 
                    return; 
                } 
            } 
        } 
        protected void Page_Load(object sender, EventArgs e) 
        { 
            Label16.Text = DateTime.Now.ToString(); 
            Label17.Text = DateTime.Now.ToString(); 
            //ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "jquery-1.5.2", "~/JS/jquery-1.5.2.js"); 
            //ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "highcharts.src", "~/JS/highcharts.src.js"); 
            //ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "JS1", "~/JS/JS1.js"); 
        } 
        //protected void Page_OnLoad(object sender, EventArgs e) 
        //{ 
        //    ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "jquery-1.5.2", "~/JS/jquery-1.5.2.js"); 
        //    ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "highcharts.src", "~/JS/highcharts.src.js"); 
        //    ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "JS1", "~/JS/JS1.js"); 
        //} 
        protected void Timer1_Tick(object sender, EventArgs e) 
        { 
            if (!Client.ReadTegs()) 
            { 
                ErrorLog.Items.Add(DateTime.Now + "  " + Client.GetError); 
                ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
                UpdatePanel2.Update(); 
                Timer1.Enabled = false; 
                Param.YValue(0); 
                foreach (Control c in UpdatePanel1.ContentTemplateContainer.Controls) 
                { 
                    if (c.GetType() == typeof(Label)) 
                    { 
                        ((Label)c).Text = ""; 
                    } 
                } 
                return; 
            } 
            Label18.Text = Client.GetSetFrequency.ToString(); 
            Label1.Text = "Код состояния устройства: " + Client.GetCodeStatus; 
            Label2.Text = "Идентификатор ошибки: " + Client.GetCodeError; 
            switch (Client.GetStatusDevice) 
            { 
                case 0: StatusDevice = "остоновлен"; break; 
                case 1: StatusDevice = "торможение"; break; 
                case 2: StatusDevice = "в резерве"; break; 
                case 3: StatusDevice = "работает"; break; 
                default: StatusDevice = "ошибка"; break; 
            } 
            Label3.Text = "Состояние привода: " + StatusDevice; 
            switch (Client.GetRotationDirections) 
            { 
                case 0: RotationDirections = "прямое"; break; 
                case 1: RotationDirections = "реверс"; break; 
                case 2: RotationDirections = "реверс"; break; 
                case 3: RotationDirections = "обратное"; break; 
                default: RotationDirections = "ошибка"; break; 
            } 
            Label4.Text = "Направление вращение: " + RotationDirections; 
            if (Client.GetControlFrequencyOnRS485 > 0) ControlFrequencyOnRS485 = "разрешено"; 
            else ControlFrequencyOnRS485 = "запрещено"; 
            Label5.Text = "Цифровое управление частотой: " + ControlFrequencyOnRS485; 
            if (Client.GetControlFrequencyOnAnalog > 0) ControlFrequencyOnAnalog = "разрешено"; 
            else ControlFrequencyOnAnalog = "запрещено"; 
            Label6.Text = "Аналоговое управление частотой: " + ControlFrequencyOnAnalog; 
            if (Client.GetControlDeviceOnRS485 > 0) ControlDeviceOnRS485 = "разрешено"; 
            else ControlDeviceOnRS485 = "запрещено"; 
            Label7.Text = "Цифровое управление приводом: " + ControlDeviceOnRS485; 
            Label8.Text = "Заданная частота: " + Client.GetSetFrequency; 
            Label9.Text = "Выходная частота: " + Client.GetOutputFrequency; 
            Label10.Text = "Выходной ток: " + Client.GetOutputCurrent; 
            Label11.Text = "Напряжение на шине постоянного тока: " + Client.GetVoltageBusDNS; 
            Label12.Text = "Выходное напряжение: " + Client.GetOutputVoltage; 
            Label13.Text = "Температура IGBT-модуля: " + Client.GetTemperatureIGBT; 
            Label14.Text = "Програмируемое значение 1: " + Client.GetProgrammedWord_1; 
            Label15.Text = "Програмируемое значение 2: " + Client.GetProgrammedWord_2; 
            Param.YValue(Client.GetSetFrequency); 
        } 
        protected void Button2_Click(object sender, EventArgs e) 
        { 
            MultiView1.ActiveViewIndex = 1; 
            if (Client.GetOutputFrequency == 0) 
            { 
                Client.Start((byte)id.IdDevice, (byte)id.IdControlStartStop); 
                ErrorLog.Items.Add(DateTime.Now + "  " + Client.GetError + " [Старт]"); 
                ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
                UpdatePanel2.Update(); 
            } 
        } 
        protected void Button3_Click(object sender, EventArgs e) 
        { 
            if (Client.GetOutputFrequency != 0) 
            { 
                Client.Stop((byte)id.IdDevice, (byte)id.IdControlStartStop); 
                ErrorLog.Items.Add(DateTime.Now + "  " + Client.GetError + " [Стоп]"); 
                ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
                UpdatePanel2.Update(); 
            } 
        } 
        protected void Button4_Click(object sender, EventArgs e) 
        { 
            MultiView1.ActiveViewIndex = 0; 
            if (Client.GetRotationDirections == 0) 
            { 
                Client.Rev((byte)id.IdDevice, (byte)id.IdControlRev, 0); 
                ErrorLog.Items.Add(DateTime.Now + "  " + Client.GetError + " [Реверс]"); 
                ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
                UpdatePanel2.Update(); 
                return; 
            } 
            if (Client.GetRotationDirections == 3) 
            { 
                Client.Rev((byte)id.IdDevice, (byte)id.IdControlRev, 1); 
                ErrorLog.Items.Add(DateTime.Now + "  " + Client.GetError + " [Реверс]"); 
                ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
                UpdatePanel2.Update(); 
                return; 
            } 
        } 
        protected void Button5_Click(object sender, EventArgs e) 
        { 
            if (Client.GetCodeError != 0) 
            { 
                Client.DumpErrors((byte)id.IdDevice, (byte)id.IdDumpErrors); 
                ErrorLog.Items.Add(DateTime.Now + "  " + Client.GetError + " [Сброс ошибок]"); 
                ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
                UpdatePanel2.Update(); 
            } 
        } 
        protected void Button6_Click(object sender, EventArgs e) 
        { 
            if (Freq.Text == "") 
            { 
                ErrorLog.Items.Add(DateTime.Now + "  " + "Введите значение частоты"); 
                ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
                UpdatePanel2.Update(); 
                return; 
            } 
            Page.Validate(); 
            if (!Page.IsValid) 
            { 
                ErrorLog.Items.Add(DateTime.Now + "  " + RegularExpressionValidator1.ErrorMessage); 
                ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
                UpdatePanel2.Update(); 
                return; 
            } 
            Client.ControlFrequency(MaxFrequency, Freq.Text, (byte)id.IdDevice, (byte)id.IdControlFrequency); 
            ErrorLog.Items.Add(DateTime.Now + "  " + Client.GetError + " [Запись частоты]"); 
            ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
            UpdatePanel2.Update(); 
            Freq.Text = ""; 
        } 
        protected void Button8_Click(object sender, EventArgs e) 
        { 
            if (!Client.CloseSocket()) 
            { 
                ErrorLog.Items.Add(DateTime.Now + "  " + Client.GetError); 
                ErrorLog.SelectedIndex = ErrorLog.Items.Count - 1; 
                UpdatePanel2.Update(); 
                Timer1.Enabled = false; 
                Param.YValue(0); 
                foreach (Control c in UpdatePanel1.ContentTemplateContainer.Controls) 
                { 
                    if (c.GetType() == typeof(Label)) 
                    { 
                        ((Label)c).Text = ""; 
                    } 
                } 
            } 
            Response.Redirect("~/List.aspx"); 
        } 
 
        protected void Button1_Click(object sender, EventArgs e) 
        { 
            UpdatePanel4.Update(); 
            //ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "jquery-1.5.2", "~/JS/jquery-1.5.2.js"); 
            //ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "highcharts.src", "~/JS/highcharts.src.js"); 
            //ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "JS1", "~/JS/JS1.js"); 
        } 
 
        protected void Button7_Click(object sender, EventArgs e) 
        { 
            container.Visible = false; 
            UpdatePanel4.Update(); 
            //ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "JS1", "~/JS/JS1.js"); 
        } 
 
        protected void Button9_Click(object sender, EventArgs e) 
        { 
            container.Visible = true; 
            UpdatePanel4.Update(); 
            //ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "JS1", "~/JS/JS1.js"); 
        } 
        //protected void Page_PreRender(object sender, EventArgs e) 
        //{ 
        //    ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "jquery-1.5.2", "~/JS/jquery-1.5.2.js"); 
        //    ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "highcharts.src", "~/JS/highcharts.src.js"); 
        //    ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "JS1", "~/JS/JS1.js"); 
        //} 
    } 
}

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

Ответ #5 @Aleksey Nemiro 21.04.2011 16:53
У меня всего один валидатор, я думаю цикл не нужен:)
Я вроде показал, где должен быть еще один, а то выходит, что в одном месте валидатор используется, а в другом - нет. Прям таки не до крашенный забор какой-то.
Тогда можно было б просто регулярные выражения использовать, без валидаторов.

По коду. Шаблон регулярного выражения для целых чисел и чисел с плавающей точкой может быть таким:
^(\d+[.,]{1}\d+)|(\d+)$

Display="None" у валидатора приведет к тому, что если элементы формы не пройдут проверку, то PostBack-а не будет, и это никак не отобразится на странице, если нет ValidationSummary. Чтобы валидатор работал без ValidationSummary и с Display=None, нужно блокировать использование валидатором клиентских скриптов EnableClientScript="false".

Хотя приведенные фрагменты кода должны работать нормально.

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

Добавить свой ответ в эту тему · В теме есть еще 7 ответов. Смотреть все ответы.
Здравствуйте. Я начинающий программист в области VB, и хотел бы узнать, можно ли в этой среде программирования сделать программу, которая бы каждые 20 секунд переподключала интернет и нажимала кнопочку на сайте?

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

Ответ #1 @Aleksey Nemiro 19.04.2011 19:00
Да, это возможно.
Для нажатия кнопок и имитации любых других клиентских действий, проще всего использовать элемент управления WebBrowser.

Что касается создания каждые 20 секунд подключения к Интернет, то скорей придется учитывать особенности системы (Windows) и типа соединения. С таким маленьким интервалом удобней держать постоянно открытое соединение с Интернет.

PS: Visual Basic 6.0 уже древний, под современными системами проще использовать технологии .NET Framework (Visual Basic .NET).

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

Ответ #2 @Zveriko 19.04.2011 19:21
Спасибо! Теперь хоть знаю, что это возможо) А где можно найти программные коды, которые помогут мне при написании этой программы?)

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

Ответ #3 @Aleksey Nemiro 19.04.2011 19:33
Я начинающий программист в области VB
с учетом этого, рекомендую посмотреть в сторону Visual Basic .NET.
Совсем недавно, spiller создал множество тем по имитации действий интернет-пользователя.
Вот они, можно начинать смотреть с конца третий страницы.

Все остальное будет зависеть от задачи. Универсальных решений в таких вопросах, как правило, не существует.

В Visual Basic 6.0 реализация может быть сложнее, чем в .NET.

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

Ответ #4 @Zveriko 19.04.2011 20:16
Большое Спасибо!!!)

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

Ответ #5 @Zveriko 20.04.2011 00:08
А что за штука этот WebBrowser?)

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

Добавить свой ответ в эту тему · В теме есть еще 17 ответов. Смотреть все ответы.
Здравствуйте!Имеется строчка похожего содержания на это - %D0%A2%D0%B5%D0%BC%D1%8B%D1%87 надо перделать ее в нормальную читаемую. как это сделать?

З.Ы Visual Basic 6
Заранееспасибо

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

Ответ #2 @artF 18.04.2011 18:52
Не совсем понял....как использовать?Допустим я вставил это в модуль...и как декодировать такую строчку и вывести кудато?

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

Ответ #3 @Aleksey Nemiro 18.04.2011 18:56
Если в модуль, то функция должна быть Public
Private Public Function URLDecode(ByVal txt As String) As String

Использовать также, как и любую другу функцию. Например:
MsgBox URLDecode("%D0%A2%D0%B5%D0%BC%D1%8B%D1%87")

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

Ответ #4 @artF 18.04.2011 19:08
Все равно выдает ошибку .ругается на "SetSafeChars"

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

Ответ #5 @Aleksey Nemiro 18.04.2011 19:27
Можно попробовать удалить, делов та на один клик мышки и нажатие одной клавиши :-)

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

Добавить свой ответ в эту тему · В теме есть еще 6 ответов. Смотреть все ответы.
Добрый день.
По долгу службы делаю веб-приложение (ASP VB) под VS 10 (первый раз с визуал студио вообще) в качестве БД использую MySql 5.1.41.
Скачал коннектер.... Селекты делает, но только те, где условие на английском либо числовое.
Руссокязычные условия типа
 <asp:SqlDataSource ID="SqlDataSource1" runat="server"     DataSourceMode="DataSet"
      ConnectionString="<%$ ConnectionStrings:prostoyConnectionString %>"  
    ProviderName="<%$ ConnectionStrings:prostoyConnectionString.ProviderName %>" 
          SelectCommand="SELECT A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, prich.prich, prich.prim FROM prostoy, prich where prostoy. B='Платформа'"> 
          </asp:SqlDataSource>
Выполнять отказывается. В базе столбец B русскоязычный.

Кодировка в Базе utf8_general_ci
Для приложения тоже прописал
<meta http-equiv="Content-Type" content="text/html; charset=utf8_general_ci"/>
\

КАк можно реализовать?
Очень надо... Чем проще - тем лучше.
Заранее благодарю.

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

Ответ #1 @Aleksey Nemiro 18.04.2011 11:33
В строке соединения можно попробовать указывать кодировку:
CharSet=utf8;Character Set=utf8;

И вот еще одно, но более муторное решение.

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

Ответ #2 @CAPT 19.04.2011 02:18
Алексей, большое спасибо)) Помогло.

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

Добавить свой ответ в эту тему
Здравствуйте.
Использую VS2010 + MSSQL 2008. Страничка получает данные из БД, дает редактировать и сохранить. В БД есть поле numeric(18,6) в котором хранятся дробные числа. Если запускать проект в VS - разделитель целой и дробной части точка. Если запускать в IIS на той же машине - запятая... В web.config прописано:
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="ru-RU" uiCulture="ru-RU" />
В настройках IIS тоже прописал Ru. Не помогает...

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

Ответ #1 @Aleksey Nemiro 18.04.2011 11:42
Такой вопрос уже бы буквально неделю назад :-)

Проблема известная и есть универсальное решение в виде готовый функции:
Преобразование строки в Double, исключая проблемы с разделителем
Public Function StrToDouble(ByVal value As String) As Double 
 Dim Result As Double = 0 
 Dim Separator As String = System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator 
 Double.TryParse(System.Text.RegularExpressions.Regex.Replace(value.Trim, ",|\.", Separator), System.Globalization.NumberStyles.Any, System.Threading.Thread.CurrentThread.CurrentCulture, Result) 
 Return Result 
End Function
public double StrToDouble(string value) 
{ 
 double result = 0; 
 string Separator = System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator; 
 double.TryParse(System.Text.RegularExpressions.Regex.Replace(value.Trim(), ",|\\.", Separator), System.Globalization.NumberStyles.Any, System.Threading.Thread.CurrentThread.CurrentCulture, out result); 
 return result; 
}
Здесь используется регулярное выражение для замены разделителя в соответствии с установленными параметрами Windows,и число может содержать в качестве разделителя как точку, так и запятую.

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

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

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

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

Имитация нажатий клавиш клавиатуры

Visual Basic .NET: Клавиатуры, мыши, джойстики @Microsoft 20.04.2011 16:16
Простой пример на Visual Basic .NET имитирует нажатия клавиш клавиатуры. В примере используются API-функции: FindWindow и SetForegroundWindow.
  Declare Auto Function FindWindow Lib "USER32.DLL" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr 
  Declare Auto Function SetForegroundWindow Lib "USER32.DLL" (ByVal hWnd As IntPtr) As Boolean 
 
 
  Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    Dim calculatorHandle As IntPtr = FindWindow("CalcFrame", "Калькулятор")'в этом месте может потребоваться изменение, в зависимости от системы 
 
    If calculatorHandle = IntPtr.Zero Then 
      MsgBox("Калькулятор не запущен.") 
      Return 
    End If 
 
    SetForegroundWindow(calculatorHandle) 
    SendKeys.SendWait("123") 
    SendKeys.SendWait("+") 
    SendKeys.SendWait("456") 
    SendKeys.SendWait("=") 
  End Sub

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

Меню в стиле Office 2007

Windows Presentation Foundation (WPF): Интерфейс @Дерек Бартрам 19.04.2011 15:50
Реализация меню в стиле MS Office 2007 на WPF (C#).
Пример представляет собой бесплатную для некоммерческого использования библиотеку элементов управления с открытым исходным кодом.

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

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

Декодирование url

Visual Basic 5.0/6.0: Строки @Интернет 18.04.2011 18:35
Функция на Visual Basic 6.0, которая позволяет декодировать url в читаемую строку. Как известно, в url можно использовать только символы ASCII, в число которых входя цифры, английские буквы и некоторые спец. символы, остальные символы кодируются в шестнадцатеричное представление. Например: "%cf%f0%e8%e2%e5%f2+%ec%e 8%f0!". Данная функция позволяет декодировать шестнадцатеричный текст в обычный.
Private Function URLDecode(ByVal txt As String) As String 
 Dim txt_len As Integer 
 Dim i As Integer 
 Dim ch As String 
 Dim digits As String 
 Dim result As String 
 
  result = "" 
  txt_len = Len(txt) 
  i = 1 
  Do While i <= txt_len 
    ch = Mid$(txt, i, 1) 
    If ch = "+" Then 
      result = result & " " 
    ElseIf ch <> "%" Then 
      result = result & ch 
    ElseIf i > txt_len - 2 Then 
      result = result & ch 
    Else 
      digits = Mid$(txt, i + 1, 2) 
      result = result & Chr$(CInt("&H" & digits)) 
      i = i + 2 
    End If 
    i = i + 1 
  Loop 
 
  URLDecode = result 
End Function

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

Хитрые ярлыки

C#: Система @Аркадий 18.04.2011 02:11
Программа на C#, которая создает в системе не удаляемые ярлыки других программ. Удалить созданные ярлыки можно только при помощи этой же программы, но не из Windows.

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

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

Тестер регулярных выражений

C#: Регулярные выражения @Аркадий 18.04.2011 01:53
Простая программа на C# для тестирования шаблонов регулярных выражений.

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

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

Расчет MD5 строки

JavaScript: Криптография, защита данных @WebToolkit 16.04.2011 16:00
Функция на JavaScript, которая позволяет рассчитать хеш-сумму указанной строки по алгоритму md5.
var MD5 = function (string)
{ 
  
 function RotateLeft(lValue, iShiftBits) { 
  return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits)); 
 } 
  
 function AddUnsigned(lX,lY) { 
  var lX4,lY4,lX8,lY8,lResult; 
  lX8 = (lX & 0x80000000); 
  lY8 = (lY & 0x80000000); 
  lX4 = (lX & 0x40000000); 
  lY4 = (lY & 0x40000000); 
  lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF); 
  if (lX4 & lY4) { 
   return (lResult ^ 0x80000000 ^ lX8 ^ lY8); 
  } 
  if (lX4 | lY4) { 
   if (lResult & 0x40000000) { 
    return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); 
   } else { 
    return (lResult ^ 0x40000000 ^ lX8 ^ lY8); 
   } 
  } else { 
   return (lResult ^ lX8 ^ lY8); 
  } 
  } 
  
  function F(x,y,z) { return (x & y) | ((~x) & z); } 
  function G(x,y,z) { return (x & z) | (y & (~z)); } 
  function H(x,y,z) { return (x ^ y ^ z); } 
 function I(x,y,z) { return (y ^ (x | (~z))); } 
  
 function FF(a,b,c,d,x,s,ac) { 
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac)); 
  return AddUnsigned(RotateLeft(a, s), b); 
 }; 
  
 function GG(a,b,c,d,x,s,ac) { 
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac)); 
  return AddUnsigned(RotateLeft(a, s), b); 
 }; 
  
 function HH(a,b,c,d,x,s,ac) { 
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac)); 
  return AddUnsigned(RotateLeft(a, s), b); 
 }; 
  
 function II(a,b,c,d,x,s,ac) { 
  a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac)); 
  return AddUnsigned(RotateLeft(a, s), b); 
 }; 
  
 function ConvertToWordArray(string) { 
  var lWordCount; 
  var lMessageLength = string.length; 
  var lNumberOfWords_temp1=lMessageLength + 8; 
  var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64; 
  var lNumberOfWords = (lNumberOfWords_temp2+1)*16; 
  var lWordArray=Array(lNumberOfWords-1); 
  var lBytePosition = 0; 
  var lByteCount = 0; 
  while ( lByteCount < lMessageLength ) { 
   lWordCount = (lByteCount-(lByteCount % 4))/4; 
   lBytePosition = (lByteCount % 4)*8; 
   lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition)); 
   lByteCount++; 
  } 
  lWordCount = (lByteCount-(lByteCount % 4))/4; 
  lBytePosition = (lByteCount % 4)*8; 
  lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition); 
  lWordArray[lNumberOfWords-2] = lMessageLength<<3; 
  lWordArray[lNumberOfWords-1] = lMessageLength>>>29; 
  return lWordArray; 
 }; 
  
 function WordToHex(lValue) { 
  var WordToHexValue="",WordToHexValue_temp="",lByte,lCount; 
  for (lCount = 0;lCount<=3;lCount++) { 
   lByte = (lValue>>>(lCount*8)) & 255; 
   WordToHexValue_temp = "0" + lByte.toString(16); 
   WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2); 
  } 
  return WordToHexValue; 
 }; 
  
 function Utf8Encode(string) { 
  string = string.replace(/\r\n/g,"\n"); 
  var utftext = ""; 
  
  for (var n = 0; n < string.length; n++) { 
  
   var c = string.charCodeAt(n); 
  
   if (c < 128) { 
    utftext += String.fromCharCode(c); 
   } 
   else if((c > 127) && (c < 2048)) { 
    utftext += String.fromCharCode((c >> 6) | 192); 
    utftext += String.fromCharCode((c & 63) | 128); 
   } 
   else { 
    utftext += String.fromCharCode((c >> 12) | 224); 
    utftext += String.fromCharCode(((c >> 6) & 63) | 128); 
    utftext += String.fromCharCode((c & 63) | 128); 
   } 
  
  } 
  
  return utftext; 
 }; 
  
 var x=Array(); 
 var k,AA,BB,CC,DD,a,b,c,d; 
 var S11=7, S12=12, S13=17, S14=22; 
 var S21=5, S22=9 , S23=14, S24=20; 
 var S31=4, S32=11, S33=16, S34=23; 
 var S41=6, S42=10, S43=15, S44=21; 
  
 string = Utf8Encode(string); 
  
 x = ConvertToWordArray(string); 
  
 a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; 
  
 for (k=0;k<x.length;k+=16) { 
  AA=a; BB=b; CC=c; DD=d; 
  a=FF(a,b,c,d,x[k+0], S11,0xD76AA478); 
  d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756); 
  c=FF(c,d,a,b,x[k+2], S13,0x242070DB); 
  b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE); 
  a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF); 
  d=FF(d,a,b,c,x[k+5], S12,0x4787C62A); 
  c=FF(c,d,a,b,x[k+6], S13,0xA8304613); 
  b=FF(b,c,d,a,x[k+7], S14,0xFD469501); 
  a=FF(a,b,c,d,x[k+8], S11,0x698098D8); 
  d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF); 
  c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1); 
  b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE); 
  a=FF(a,b,c,d,x[k+12],S11,0x6B901122); 
  d=FF(d,a,b,c,x[k+13],S12,0xFD987193); 
  c=FF(c,d,a,b,x[k+14],S13,0xA679438E); 
  b=FF(b,c,d,a,x[k+15],S14,0x49B40821); 
  a=GG(a,b,c,d,x[k+1], S21,0xF61E2562); 
  d=GG(d,a,b,c,x[k+6], S22,0xC040B340); 
  c=GG(c,d,a,b,x[k+11],S23,0x265E5A51); 
  b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA); 
  a=GG(a,b,c,d,x[k+5], S21,0xD62F105D); 
  d=GG(d,a,b,c,x[k+10],S22,0x2441453); 
  c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681); 
  b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8); 
  a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6); 
  d=GG(d,a,b,c,x[k+14],S22,0xC33707D6); 
  c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87); 
  b=GG(b,c,d,a,x[k+8], S24,0x455A14ED); 
  a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905); 
  d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8); 
  c=GG(c,d,a,b,x[k+7], S23,0x676F02D9); 
  b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A); 
  a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942); 
  d=HH(d,a,b,c,x[k+8], S32,0x8771F681); 
  c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122); 
  b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C); 
  a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44); 
  d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9); 
  c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60); 
  b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70); 
  a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6); 
  d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA); 
  c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085); 
  b=HH(b,c,d,a,x[k+6], S34,0x4881D05); 
  a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039); 
  d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5); 
  c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8); 
  b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665); 
  a=II(a,b,c,d,x[k+0], S41,0xF4292244); 
  d=II(d,a,b,c,x[k+7], S42,0x432AFF97); 
  c=II(c,d,a,b,x[k+14],S43,0xAB9423A7); 
  b=II(b,c,d,a,x[k+5], S44,0xFC93A039); 
  a=II(a,b,c,d,x[k+12],S41,0x655B59C3); 
  d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92); 
  c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D); 
  b=II(b,c,d,a,x[k+1], S44,0x85845DD1); 
  a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F); 
  d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0); 
  c=II(c,d,a,b,x[k+6], S43,0xA3014314); 
  b=II(b,c,d,a,x[k+13],S44,0x4E0811A1); 
  a=II(a,b,c,d,x[k+4], S41,0xF7537E82); 
  d=II(d,a,b,c,x[k+11],S42,0xBD3AF235); 
  c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB); 
  b=II(b,c,d,a,x[k+9], S44,0xEB86D391); 
  a=AddUnsigned(a,AA); 
  b=AddUnsigned(b,BB); 
  c=AddUnsigned(c,CC); 
  d=AddUnsigned(d,DD); 
 } 
  
 var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d); 
  
 return temp.toLowerCase(); 
}

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

Расчет хеш-суммы SHA-1

JavaScript: Криптография, защита данных @WebToolkit 16.04.2011 15:57
Функция на JavaScript для расчета хеш-суммы указанной строки по алгоритму SHA-1.
function SHA1 (msg)
{ 
  
 function rotate_left(n,s) { 
  var t4 = ( n<<s ) | (n>>>(32-s)); 
  return t4; 
 }; 
  
 function lsb_hex(val) { 
  var str=""; 
  var i; 
  var vh; 
  var vl; 
  
  for( i=0; i<=6; i+=2 ) { 
   vh = (val>>>(i*4+4))&0x0f; 
   vl = (val>>>(i*4))&0x0f; 
   str += vh.toString(16) + vl.toString(16); 
  } 
  return str; 
 }; 
  
 function cvt_hex(val) { 
  var str=""; 
  var i; 
  var v; 
  
  for( i=7; i>=0; i-- ) { 
   v = (val>>>(i*4))&0x0f; 
   str += v.toString(16); 
  } 
  return str; 
 }; 
  
  
 function Utf8Encode(string) { 
  string = string.replace(/\r\n/g,"\n"); 
  var utftext = ""; 
  
  for (var n = 0; n < string.length; n++) { 
  
   var c = string.charCodeAt(n); 
  
   if (c < 128) { 
    utftext += String.fromCharCode(c); 
   } 
   else if((c > 127) && (c < 2048)) { 
    utftext += String.fromCharCode((c >> 6) | 192); 
    utftext += String.fromCharCode((c & 63) | 128); 
   } 
   else { 
    utftext += String.fromCharCode((c >> 12) | 224); 
    utftext += String.fromCharCode(((c >> 6) & 63) | 128); 
    utftext += String.fromCharCode((c & 63) | 128); 
   } 
  
  } 
  
  return utftext; 
 }; 
  
 var blockstart; 
 var i, j; 
 var W = new Array(80); 
 var H0 = 0x67452301; 
 var H1 = 0xEFCDAB89; 
 var H2 = 0x98BADCFE; 
 var H3 = 0x10325476; 
 var H4 = 0xC3D2E1F0; 
 var A, B, C, D, E; 
 var temp; 
  
 msg = Utf8Encode(msg); 
  
 var msg_len = msg.length; 
  
 var word_array = new Array(); 
 for( i=0; i<msg_len-3; i+=4 ) { 
  j = msg.charCodeAt(i)<<24 | msg.charCodeAt(i+1)<<16 | 
  msg.charCodeAt(i+2)<<8 | msg.charCodeAt(i+3); 
  word_array.push( j ); 
 } 
  
 switch( msg_len % 4 ) { 
  case 0: 
   i = 0x080000000; 
  break; 
  case 1: 
   i = msg.charCodeAt(msg_len-1)<<24 | 0x0800000; 
  break; 
  
  case 2: 
   i = msg.charCodeAt(msg_len-2)<<24 | msg.charCodeAt(msg_len-1)<<16 | 0x08000; 
  break; 
  
  case 3: 
   i = msg.charCodeAt(msg_len-3)<<24 | msg.charCodeAt(msg_len-2)<<16 | msg.charCodeAt(msg_len-1)<<8 | 0x80; 
  break; 
 } 
  
 word_array.push( i ); 
  
 while( (word_array.length % 16) != 14 ) word_array.push( 0 ); 
  
 word_array.push( msg_len>>>29 ); 
 word_array.push( (msg_len<<3)&0x0ffffffff ); 
  
  
 for ( blockstart=0; blockstart<word_array.length; blockstart+=16 ) { 
  
  for( i=0; i<16; i++ ) W[i] = word_array[blockstart+i]; 
  for( i=16; i<=79; i++ ) W[i] = rotate_left(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1); 
  
  A = H0; 
  B = H1; 
  C = H2; 
  D = H3; 
  E = H4; 
  
  for( i= 0; i<=19; i++ ) { 
   temp = (rotate_left(A,5) + ((B&C) | (~B&D)) + E + W[i] + 0x5A827999) & 0x0ffffffff; 
   E = D; 
   D = C; 
   C = rotate_left(B,30); 
   B = A; 
   A = temp; 
  } 
  
  for( i=20; i<=39; i++ ) { 
   temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff; 
   E = D; 
   D = C; 
   C = rotate_left(B,30); 
   B = A; 
   A = temp; 
  } 
  
  for( i=40; i<=59; i++ ) { 
   temp = (rotate_left(A,5) + ((B&C) | (B&D) | (C&D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff; 
   E = D; 
   D = C; 
   C = rotate_left(B,30); 
   B = A; 
   A = temp; 
  } 
  
  for( i=60; i<=79; i++ ) { 
   temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff; 
   E = D; 
   D = C; 
   C = rotate_left(B,30); 
   B = A; 
   A = temp; 
  } 
  
  H0 = (H0 + A) & 0x0ffffffff; 
  H1 = (H1 + B) & 0x0ffffffff; 
  H2 = (H2 + C) & 0x0ffffffff; 
  H3 = (H3 + D) & 0x0ffffffff; 
  H4 = (H4 + E) & 0x0ffffffff; 
  
 } 
  
 var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4); 
  
 return temp.toLowerCase(); 
  
}

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

Base64

JavaScript: Строки @WebToolkit 16.04.2011 15:54
Класс на JavaScript, позволяющий кодировать и декодировать данные в Base64.
var Base64 = { 
  
 // private property 
 _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", 
  
 // public method for encoding 
 encode : function (input) { 
  var output = ""; 
  var chr1, chr2, chr3, enc1, enc2, enc3, enc4; 
  var i = 0; 
  
  input = Base64._utf8_encode(input); 
  
  while (i < input.length) { 
  
   chr1 = input.charCodeAt(i++); 
   chr2 = input.charCodeAt(i++); 
   chr3 = input.charCodeAt(i++); 
  
   enc1 = chr1 >> 2; 
   enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); 
   enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); 
   enc4 = chr3 & 63; 
  
   if (isNaN(chr2)) { 
    enc3 = enc4 = 64; 
   } else if (isNaN(chr3)) { 
    enc4 = 64; 
   } 
  
   output = output + 
   this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + 
   this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); 
  
  } 
  
  return output; 
 }, 
  
 // public method for decoding 
 decode : function (input) { 
  var output = ""; 
  var chr1, chr2, chr3; 
  var enc1, enc2, enc3, enc4; 
  var i = 0; 
  
  input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); 
  
  while (i < input.length) { 
  
   enc1 = this._keyStr.indexOf(input.charAt(i++)); 
   enc2 = this._keyStr.indexOf(input.charAt(i++)); 
   enc3 = this._keyStr.indexOf(input.charAt(i++)); 
   enc4 = this._keyStr.indexOf(input.charAt(i++)); 
  
   chr1 = (enc1 << 2) | (enc2 >> 4); 
   chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); 
   chr3 = ((enc3 & 3) << 6) | enc4; 
  
   output = output + String.fromCharCode(chr1); 
  
   if (enc3 != 64) { 
    output = output + String.fromCharCode(chr2); 
   } 
   if (enc4 != 64) { 
    output = output + String.fromCharCode(chr3); 
   } 
  
  } 
  
  output = Base64._utf8_decode(output); 
  
  return output; 
  
 }, 
  
 // private method for UTF-8 encoding 
 _utf8_encode : function (string) { 
  string = string.replace(/\r\n/g,"\n"); 
  var utftext = ""; 
  
  for (var n = 0; n < string.length; n++) { 
  
   var c = string.charCodeAt(n); 
  
   if (c < 128) { 
    utftext += String.fromCharCode(c); 
   } 
   else if((c > 127) && (c < 2048)) { 
    utftext += String.fromCharCode((c >> 6) | 192); 
    utftext += String.fromCharCode((c & 63) | 128); 
   } 
   else { 
    utftext += String.fromCharCode((c >> 12) | 224); 
    utftext += String.fromCharCode(((c >> 6) & 63) | 128); 
    utftext += String.fromCharCode((c & 63) | 128); 
   } 
  
  } 
  
  return utftext; 
 }, 
  
 // private method for UTF-8 decoding 
 _utf8_decode : function (utftext) { 
  var string = ""; 
  var i = 0; 
  var c = c1 = c2 = 0; 
  
  while ( i < utftext.length ) { 
  
   c = utftext.charCodeAt(i); 
  
   if (c < 128) { 
    string += String.fromCharCode(c); 
    i++; 
   } 
   else if((c > 191) && (c < 224)) { 
    c2 = utftext.charCodeAt(i+1); 
    string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); 
    i += 2; 
   } 
   else { 
    c2 = utftext.charCodeAt(i+1); 
    c3 = utftext.charCodeAt(i+2); 
    string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); 
    i += 3; 
   } 
  
  } 
  
  return string; 
 } 
  
}

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

Перетаскивание (Drag'n'Drop) html-элементов

JavaScript: Интерфейс @WebToolkit 16.04.2011 15:47
Пример перетаскивания (Drag'n'Drop) html-элементов при помощи JavaScript.
var DragHandler = {
  
  
 // private property. 
 _oElem : null, 
  
  
 // public method. Attach drag handler to an element. 
 attach : function(oElem) { 
  oElem.onmousedown = DragHandler._dragBegin; 
  
  // callbacks 
  oElem.dragBegin = new Function(); 
  oElem.drag = new Function(); 
  oElem.dragEnd = new Function(); 
  
  return oElem; 
 }, 
  
  
 // private method. Begin drag process. 
 _dragBegin : function(e) { 
  var oElem = DragHandler._oElem = this; 
  
  if (isNaN(parseInt(oElem.style.left))) { oElem.style.left = '0px'; } 
  if (isNaN(parseInt(oElem.style.top))) { oElem.style.top = '0px'; } 
  
  var x = parseInt(oElem.style.left); 
  var y = parseInt(oElem.style.top); 
  
  e = e ? e : window.event; 
  oElem.mouseX = e.clientX; 
  oElem.mouseY = e.clientY; 
  
  oElem.dragBegin(oElem, x, y); 
  
  document.onmousemove = DragHandler._drag; 
  document.onmouseup = DragHandler._dragEnd; 
  return false; 
 }, 
  
  
 // private method. Drag (move) element. 
 _drag : function(e) { 
  var oElem = DragHandler._oElem; 
  
  var x = parseInt(oElem.style.left); 
  var y = parseInt(oElem.style.top); 
  
  e = e ? e : window.event; 
  oElem.style.left = x + (e.clientX - oElem.mouseX) + 'px'; 
  oElem.style.top = y + (e.clientY - oElem.mouseY) + 'px'; 
  
  oElem.mouseX = e.clientX; 
  oElem.mouseY = e.clientY; 
  
  oElem.drag(oElem, x, y); 
  
  return false; 
 }, 
  
  
 // private method. Stop drag process. 
 _dragEnd : function() { 
  var oElem = DragHandler._oElem; 
  
  var x = parseInt(oElem.style.left); 
  var y = parseInt(oElem.style.top); 
  
  oElem.dragEnd(oElem, x, y); 
  
  document.onmousemove = null; 
  document.onmouseup = null; 
  DragHandler._oElem = null; 
 } 
  
}

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

Диаграмма использования жестких дисков

C#: Железо и устройства @Andrew Pociu 16.04.2011 15:37
Неплохая программка на C#, которая выводит красивые объемные диаграммы использования жестких дисков.

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

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

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

Вакансии в IT

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

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

Ведущий ASP .Net разработчик

Россия, Москва, Зеленоград | Работа в офисе | 90 000.00 RUB

Контент-менеджер

Россия, Санкт-Петербург | Работа в офисе | 30 000.00 RUB

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

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

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

Google предоставит пользователям возможность самим делать карты

Google сегодня презентовала новый сервис Google Earth Builder, позволяющий бизнесу размещать геопространственные данные в вычислительном облаке Google и получать к ним доступ через браузер на любом устройстве. Решение Earth Builder представляет собой отход от картографических продуктов компании, доступных до сих пор.

Основным картографическим решением Google на сегодняшний день является продукт Google Earth, представляющий собой бесплатное настольное программное обеспечение со снимками земной поверхности со спутника, выравненными по топографически точной трехмерной модели Земли. Компания также поставляет коммерческую версию Google Earth Pro за 399 долларов в год и Google Earth Enterprise для некоммерческих и научных целей, связанных с исследованием планеты и ее климата. Pro-версия скачивается на ПК пользователей, Earth Enterprise размещается на корпоративных серверах Google.

Корпоративное облако Google представляет собой тысячи серверов, работающих в параллельном режиме и нескольких датацентрах по всему миру. Эти серверы обслуживают десятки веб-проектов Google. Теперь Google стал доступным для корпоративных гео-продуктов, начав с сервиса Earth Builder.

21.04.2011 12:25 · Категория: Бизнес в IT · Источник: CyberSecurity.ru

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

"Лаборатория Касперского" выпустит решение для защиты виртуальных машин

Антивирусная компания "Лаборатория Касперского" до конца этого года планирует выпустить программное обеспечение для защиты от ИТ-угроз виртуальных машин, работающих на серверах и рабочих станциях. Новое решение будет осуществлять защиту через взаимодействие с VMware vShield Endpoint. В компании говорят, что новинка будет направлена на использование в среде датацентров, а загрузку машин антивирусным сканированием производитель обещает снизить до минимума.

При помощи vShield Endpoint, антивирусный продукт будет проводить сканирование программ и пользовательских данных, расположенных на виртуальных системах. Новое программное обеспечение не будет иметь клиентского интерфейса и будет работать поверх каждой виртуальной машины, что избавит пользователей от необходимости установки антивируса в каждой виртуальной операционной системе.

21.04.2011 12:24 · Категория: Безопасность · Источник: CyberSecurity.ru

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

В интернете появился аукцион IP-адресов

Факт завершения адресного IPv4-пространства в интернете не оставляет многих в стороне от данного вопроса: кто-то пытается перейти на новую версию IP-протокола, другие пытаются сделать на иссякающих адресах собственный бизнес. Так, немецкий программист Мартин Фон Левис на днях открыл веб-сайт TradeIPv4.com, где занялся продажей IP-адресов по принципу аукциона.

Сейчас проект торгует адресами из адресного пространства регистраторов ARIN (Северная Америка) и APNIC (Азия). Ставки на адреса стартуют с 3 долларов для пространства ARIN и 4 долларов для APNIC. Разница в цене логична, так как в азиатском регионе более остро ощущается нехватка адресного пространства.

Оператор TradeIPv4.com заявляет, что проект как продает адреса, так и сдает их в аренду в соответствии с политиками RIR. Фон Левис говорит, что сейчас большинство адресов уходят по 11-15 долларов за адрес.

21.04.2011 12:24 · Категория: Бизнес в IT · Источник: CyberSecurity.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 если иное не указано отдельно.


В избранное