VBA - Visual Basic 2008

Ответить
 • Просмотры: 4
Аватара пользователя
Uzvern

Re: VBA - Visual Basic 2008

Сообщение Uzvern »

Компонент называется WebBrouser, находится уже на палитре.

Для vb6 приходилось подгружать Microsoft Internet Control с файла windows\system32\shdocvm.dll

Далее для VB6го ->
http://www.trap17.com/index.php.htm/how-...er_t31604.html




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



Насчёт браузера ещё один абзац, мало того проги на VB2008 полностью зависят от работоспособности .NET платформы и всех заплаток к ней, нужно теперь будет учитывать что безопасность будет зависеть и от патчей к IE, именно на её движке работает этот компонент.



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

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



Средства операций с реестром в VB6м были очень ограничены, и разрешали доступ к HKEY_CURRENT_USER\Software\VB and VBA Program Settings с помощью АПИ можно было и весь реестр проработать но для этого знаний только VB6 было явно недостаточно. Выкручивались даже через shell(“Regedit /s nastroyki.reg”), пока с АПИ не были знакомы.

В VB2008м ограничения на работу с реестром ставит только рационализм кодера, всё организовано через объект

My.Computer.Registry

Например так, прикинемся старинной прогой, написанной на VB6 и сохранимся в заповедном месте My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyApp", "Version", "1")

По удалению My.Computer.Registry.LocalMachine. предлагает на выбор три способа по соответствующему назначению DeleteSubKey, DeleteSubKeyTree, DeleteValue



Читать можно так



Код:

Код: Выделить всё

Dim readValue As Object
        readValue = My.Computer.Registry.GetValue _
        ("HKEY_CURRENT_USER\Software\MyApp", "Name", Nothing)
        MsgBox("The value is " & CStr(readValue))

*со справка по Visual Basic 2008 Express
Аватара пользователя
Uzvern

Re: VBA - Visual Basic 2008

Сообщение Uzvern »

Цитата Admiral:



В проге делаешь окно Браузера и туда страницу грузить можно, но можно и текстовое но тогда страницу необходимо будет парсить, выдирать только текстовую информацию, или даже нужные слова.
VBA - Visual Basic 2008




Во. это то что нужно! Скажи как это сделать плз, особенно получше про "или даже нужные слова" желательно на примере (сделать проект и залить его сюда) Изображение

Да, и что такое "парсить"? Изображение
Аватара пользователя
Admiral

Re: VBA - Visual Basic 2008

Сообщение Admiral »

Примитивно, можно сделать вот так



Код:

Код: Выделить всё

    Private Sub Label1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseDown
        A = 1
    End Sub
    Private Sub Label1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseMove
        If A = 1 Then
            Me.Left = Me.Left + e.X
            Me.Top = Me.Top + e.Y
        End If
    End Sub
    Private Sub Label1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseUp
        A = 0
    End Sub

Кстати в VB6 было аналогично было, но учитывалась и не пиксельная системе измерений.



Код:

Код: Выделить всё

'Код для VB6го
Dim A As Integer
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
A = 1
End Sub
Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If A = 1 Then
Form1.Left = Form1.Left + X \ Screen.TwipsPerPixelX
Form1.Top = Form1.Top + Y \ Screen.TwipsPerPixelX
End If
End Sub
Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
A = 0
End Sub

Форма, при начале движения один раз прыгает (не далеко, но зависит от размеров Формы и Лейбла). Главное понять принцип. Просто ещё нужна проверка, куда пользователь питается её двигать.



Во первых, предложенный код не будет работать по задуму, так как объявление (считай обнуление) переменной будет каждый раз при срабатывании таймера. Вынести её надо в секцию

General Declaration



Во вторых, размещать MsgBox в событиях на Таймере не лучшая идея.

А в остальном, как и в VB6 есть такая функция Mod, результат которой - остача от деления на её аргумент. В твоём случаи код такой



Код:

Код: Выделить всё

Dim i
...
        If i Mod 2 = 0 Then
            MsgBox("123")
        Else
            MsgBox("098")
        End If

Так же как и в VB6, есть такая команда Shell .

Достаточно строчки кода Shell ("cmd.exe")[/i]



Рекомендую таки раздобыть таки книгу. Для того что б написать такие проги знаний VB6 вполне достаточно. Ничего .NETовского в программах нет.
Аватара пользователя
Uzvern

Re: VBA - Visual Basic 2008

Сообщение Uzvern »

Как прочту, сразу все мысли сюды выложу + надо бы с парсингом разобраться...
Аватара пользователя
Uzvern

Re: VBA - Visual Basic 2008

Сообщение Uzvern »

Тема не новая, она уже выходит за рамки этой, озвучивалась в названиях следующих тем

Java - Regexp java или иной библиотеки для парсинга HTML


C/C++ - [решено] строковой парсинг




Есть ещё темы, в которых она обсуждалась. Поиск поможет найти подходящюю тему.
Аватара пользователя
Admiral

Re: VBA - Visual Basic 2008

Сообщение Admiral »

Таймер запустился, обозначил переменную i прибавил к ней единицу и закончил работу, и никто про i так и ничего не узнал. Заново запустился и по новой i объявил…
Аватара пользователя
Uzvern

Re: VBA - Visual Basic 2008

Сообщение Uzvern »

ааа....ну это то я знаю как бы ещё с самого начала как только увидел VB.



Вот ещё сабж :



у меня 8 ТекстБосов. В каждый текстбокс генерируется произвольльное число от 0 до 1 (Int(rnd(1))). Получается, если в каждый ТекстБокс сгенерируется 1, значит во всех ТекстБоксах будет 1, а мне надо чтобы в 4 (не меньше и не больше) каких-то (произвольных) ТестБокса сгенерировалось 1 или 0, точно так же если значение стоит 5, то генерируется либо 5 "0", либо 5 "1". кажется подробно объяснил.



Кстати, Admiral, посоветуй хорший учебник по VB6 (на советском), просто у меня есть, но там все урезано по максимуму. Изображение
Аватара пользователя
Uzvern

Re: VBA - Visual Basic 2008

Сообщение Uzvern »

Сделал вот так, но это не вариант. Нужно чтобы высчислялось сколько "0" будет писаться, например из 9 ТекстБокса, т.е. в 9ТекстБокс ввел "6" - получил в 6 предыдущих ТекстБоксах "0"





Код:

Код: Выделить всё

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Randomize()
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim v
        v = Int(Rnd() * 8) + 1
        If v Then
            If v = 1 Then TextBox1.Text = Int(Rnd(1))
            If v = 2 Then TextBox2.Text = Int(Rnd(1))
            If v = 3 Then TextBox3.Text = Int(Rnd(1))
            If v = 4 Then TextBox4.Text = Int(Rnd(1))
            If v = 5 Then TextBox5.Text = Int(Rnd(1))
            If v = 6 Then TextBox6.Text = Int(Rnd(1))
            If v = 7 Then TextBox7.Text = Int(Rnd(1))
            If v = 8 Then TextBox8.Text = Int(Rnd(1))
        End If
    End Sub
End Class
Аватара пользователя
Uzvern

Re: VBA - Visual Basic 2008

Сообщение Uzvern »

Нововведение VB.NET: e это структура, как я понял, объявленная где то в недрах .NET, которая в зависимости от применения к определённому объекту даёт, вернее передаёт, разные параметры.

Самое простое это после e поставить точку, среда сама предоставит разные параметры и какие доступны в текущей ситуацыи.

Посмотрим на код
VBA - Visual Basic 2008
:

на VB6 было так


Цитата Admiral:





Код:

Код: Выделить всё

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
...
End Sub

VBA - Visual Basic 2008




вроди всё устраивало всех, но увидев в VB.NET структурный способ передачи (в e в данном случаю передаётся X As Single, Y As Single)


Цитата Admiral:





Код:

Код: Выделить всё

Private Sub Label1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseMove
...
End Sub

VBA - Visual Basic 2008




понимаешь на сколько это[/i] упростила жизнь при работу со сложными объектами и т.д.



Самое простое организовать цикл и проверять там символ к символу, слово к слову, а то и вовсе словосочетание.
Аватара пользователя
Admiral

Re: VBA - Visual Basic 2008

Сообщение Admiral »

Цитата Admiral:



Самое простое организовать цикл и проверять там символ к символу, слово к слову, а то и вовсе словосочетание.
VBA - Visual Basic 2008




Ну хотябы как это сделать?



Я чет вообще втыкнуь немогу. уже пробовал, но чет нифига не получается Изображение
Ответить

Вернуться в «Программирование и базы данных»