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

Visual Basic: новости сайтов, советы, примеры кодов. Выпуск 309.


Информационный Канал Subscribe.Ru

Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 309.


VBNet VBMania
Ссылки:

  • GotDotNet
  • Улицы VB
  • Азбука VB
  • VB по русски
  • MDesign
  • DanSoft
  • Хрестоматия VB
  • VBCoder
  • Господа!!! читайте MSDN!!!

    Несколько слов от автора:

       Сейчас на vbnet.ru ударными темпами ведется разработка оффлайн-клиента для доступа к форуму и другим разделам сайта, причем в двух версиях (на .NET и на VB6). Так что скоро ожидайте выхода двух хороших программ :)
    Читайте!


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




    Вопрос по ООП

    .NET

    Вопрос:

    Есть класс А, в нем

    public overloadable sub GO()

    Также есть приватный метод, который вызывает его. Есть класс В, потомок А, в нем метод GO() перекрыт.
    Проблема: при создании объекта класса В вызывается, соотвественно, приватный метод из А, но он вызывает не перекрытый метод GO(), а свой, из класса А. Что делать?

    Базовый класс:

    class A

    public overridable sub GO()
    msgbox 1
    end sub

    public sub Do()
    ...
    call PrivSub()
    ...
    end sub

    private sub PrivSub()
    ...
    GO()
    ...
    end sub

    end class 'A


    Унаследованный: class B

    public overriden sub GO()
    msgbox 2
    end sub

    end class 'B


    Использование:

    dim d as new B()
    d.Do()
    В результате выведется сообщение "1", а не "2".

    Ответ:

    Вот работающий код:

    Imports System
         
    Public Class MyApplication
        Public Shared Sub Main()
        dim d as new B()
            d.Doo()
            Console.ReadLine()
         End Sub
    End Class

    Class A
        public overridable sub GOO()
            Console.WriteLine("A")
        end sub

        public sub Doo()
            call PrivSub()
        end sub

        private sub PrivSub()
            GOO()
        end sub
    End Class

    class B
    Inherits A
        public overrides sub GOO()
            Console.WriteLine("B")
        end sub
    end class


    наверх


    Как получить страницу по HTTP?

    .NET

    Вопрос:

    Как получить страницу по HTTP?

    Ответ:

    Для простых задач, если не надо вплотную работать со стримами или куками, например, может пригодиться класс System.Net.WebClient.

    Dim client As New WebClient()
    Dim pageData As [Byte]() = client.DownloadData("http://www.contoso.com")
    Dim pageHtml As String = Encoding.ASCII.GetString(pageData)


    наверх


    Как програмно сгенерировать uniqueidentifier?

    .NET

    Вопрос:

    Как програмно сгенерировать uniqueidentifier (уникальное значение)?

    Ответ:

    Guid g = Guid.NewGuid();
    string s = g.ToString();


    наверх


    Ошибка "Web Access Failed" при создании приложения ASP .NET.

    .NET >>> ASP .NET

    Вопрос:

    У меня никак не получается создать проект Asp .net Web Application. Только начинаю создавать - выводит ошибку "Web Access Failed".

    Ответ:

    В момент создания ASP.NET-приложения должен быть запущен IIS (Internet Information Services).

    наверх


    Запуск страницы ASP .Net по расписанию

    .NET >>> ASP .NET

    Вопрос:

    Можно ли сделать, чтобы ASP .Net страница запускалась на хостинге по расписанию?

    Ответ:

    1. В Application_Start создаем System.Threading.Timer.

    2. В callback'е таймера проверяем системное время и при необходимости запрашиваем требуемый скритп по URL'у.

    Что-то вроде:

    Imports System.Net

    Public Class Global
    Inherits System.Web.HttpApplication

    ...........................

    Dim Tmr As System.Threading.Timer

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    Tmr = New System.Threading.Timer(AddressOf RunTask, Nothing, 0, 1000)
    End Sub

    Sub RunTask(ByVal state As Object)
    Try
    Dim aURL As String = "http://localhost/x.aspx"
    Dim req As HttpWebRequest = CType(WebRequest.Create(aURL),
    HttpWebRequest)
    Dim res As HttpWebResponse = req.GetResponse
    res.Close()
    Catch
    End Try
    End Sub

    ...........................

    End Class


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



    Вопрос/Ответ

    Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы.

    Вопросы:


    Автор вопроса: NSmith

    Ответ ожидается по этому адресу

       Как читать и корректировать файл на удаленном сервере (сервер UNIX) с компьютера с Windows2000?


    Автор вопроса: ZoyberG

    Ответ ожидается по этому адресу

       Как сделать так, чтобы форма была всегда на переднем плане, даже первее чем панель задач?


    Автор вопроса: Alex

    Ответ ожидается по этому адресу

       Как подключиться к БД Access с именем пользователя и паролем? Ставлю пароль в базе данных на Admin'а, но он почему-то глючит при подключении...

    Dim Conn as ADODB.Connection

    Public Sub Connect()
    Set Conn = New ADODB.Connection
          Conn.Open "Provider=Microsoft.Jet.oledb.4.0; Data Sourse=" & App.Path & "\mdb1.mdb","Admin","'Пароль'"


    Автор вопроса: Dmitriy

    Ответ ожидается по этому адресу

       Как из тексбокса считать данные до запятой, а потом после? Например 123,456.




    Ответы:


    Вопрос:

       Пишу качалку на VB6, необходимо с выделенного фрагмента в броузере скопировать все ссылки. Буду рад любой информации, будь то исходники или ссылки.

    Ответ:

    Автор ответа: Vir_rus

    В моем браузере это выглядит так:

    Dim allCol
    Dim TagName As String
    Set allCol = fmMain.Web.Document.All
    allcount = allCol.Length
    For i = 0 To allcount - 1
    TagName = allCol.Item(i).TagName
    If TagName = "A" Then
    TagName = TagName & " - " & allCol.Item(i).href
    List1.AddItem (TagName)
    End If
    Next
       
    Надеюсь с именами разберешься сам.


    Вопрос:

       Может кто-нибудь скинуть код, как отослать элемктронную почту? Надо только установить соединение и отослать текстовое сообщение (без аттачей). Желательно ещё узнавать список имеющихся соединений.

    "ShellExecute (..."mailto:"...)" не предлагать.

    Ответ:

    Автор ответа: Михаил

    Создаем объект Winsock1
    В режиме отправления письма:
      
    Public connected as Boolean, cur_mode as boolean, buf as string
    Ip = “127.0.0.1”
    Winsock1.connect ip, 25
    Wait 3
    If wait=false then x=msgbox(“We are not connected to server. Quit”,vbokonly,”Error”):end
    connected=false ‘ догадайся зачем сбрасываю переменную. См. функцию Wait
    ‘ Приветствуем сервер
    Winsock1.senddata “HELO “ + winsock1.localip
    Wait 3
    If wait=false then x=msgbox(“Server doesn’t response to your greeting. Quit”,vbokonly,”Error”):end
    ‘ Говорим, кто мы
    Winsock1.sendata “MAIL FROM: yourmail@mailserver.namezone”
    Wait 3
    If wait=false then x=msgbox(“Server doesn’t agreed with SENDER e-mail you provided or error encountered. Quit”,vbokonly,”Error”):end
    ‘ Говорим, кому письмо
    Winsock1.senddata “RCPT TO: recipient@some-mail-server.namezone”
    Wait 3
    If wait=false then x=msgbox(“Server doesn’t agreed with RECIPIENT e-mail you provided or error encountered. Quit”,vbokonly,”Error”):end
    Winsock1.senddata “DATA”
    Wait 3
    If wait=false then x=msgbox(“Server doesn’t agreed to receive DATA”,vbokonly,”Eror”):end

    ‘ Далее следуют ругательные служебные поля данных
    ‘ From: Vasya Pupkin
    ‘ To: Ivan Ivanich
    ‘ Subject: This is important. Send me some money)))
    ‘ Content-type:html/text
    ‘ X-From:
    ‘ X-To:
    ‘ Далее отправляем что будет в сообщении. Извини, но как отправлять вложения – я не научился еще. Как-нибудь потом
      
    Winsock1.senddata “QUIT”
    ‘ И сервер скажет тебе bye-bye!!!
      
    Sub Winsock1_DataArrival( здесь аргументы идут для винсока. Они стандартные. Писать потому не буду)
    Dim zzz as string
    Winsock1.getdata zzz
    buf=buf+zzz
    if left(buf,3)=”250”or left(buf,3)=”220” then buf=””: connected=true
    ‘ сервер всегда говорит 250, когда команда выполнена правильно. ЗЫ. Иногда он говорит +OK (вроде бы)
    ‘ и сервер говорит 220 когда он тебя приветствует, до того, как это сделаешь первым.
    End sub
      
    Sub Winsock1_connected ()
    Connected =true
    End sub
      
    function wait(sec) as boolean
    wait=false
    x=timer
    do
    if connected=true then wait=true:exit sub
      
    doevents
    loop while timer-x   
    end function
      

    Прием письма:

    Соединяемся на 110 порт
    USER username
    PASS password-you-provided
    LIST – выдаст тебе количество сообщений в ящике
    RETR n – просмотр указанного сообщения
    DELE n – удаление указанного сообщения
    QUIT – выход.
    NOOP – холостая операция. Keep connection alive
      
      
    Для самостоятельного изучения используй TELNET mx16.mail.ru 25 и TELNET mx16.mail.ru 110
    Ну и поисковик помучай немного.


    Вопрос:

       Как в VB6 набрать номер телефона, т.е. позвонить?

    Ответ:

    Автор ответа: Vir_rus

    Подключаешь к проекту MicrosoftCommonControl, называшь - Modem1 и...

    'Пишешь номер порта твоего модема (обычно - 3)
    Modem1.CommPort = 3
    'Открывашь порт
    Modem1.PortOpen = True
    'И выдаешь в порт команду тонового (импульсный - ADTP) режима + нумер
    + ";" + vbCr
    Modem1.Output = "ATDT" + "911" + ";" + vbCr




    Можете заполнить эту форму, либо отослать вопрос СЮДА

    Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта.
    Текст сообщения:
    Ваше имя
    E-mail для ответа

    наверх


    Выпуск подготовили:

    Сурменок Павел

    http://subscribe.ru/
    http://subscribe.ru/feedback/
    Подписан адрес:
    Код этой рассылки: comp.soft.prog.vbnewsadvices
    Отписаться

    В избранное