Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Visual Basic (VB).

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

NEOMATRIX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Данный топик предназначен только для обсуждения типовых задач на Visual Basic.
Обсуждение задач на VBA (а именно, Excel, Word, Access) строго запрещено!
Пишите в соответствующих топиках.

 
Родственные топики:
  • Excel VBA - часть 1, часть 2 - все вопросы по Excel VBA туда
  • Word VBA все вопросы по Word VBA туда
  • Access все вопросы по программированию в Access туда
  • VBScript - программирование "удобняшек" на VBScript
  • QBasic - типовые задачи на QBasic
     
  • Date Time Functions In Visual Basic
  • VB6's Trig, Math, Financial, Boolean, and Random functions
  • Visual Basic 6 String Functions
  • VB6 Number System Functions (Hex, Oct, Etc)
  • VB6's DateAdd function
     
  • Functions (Visual Basic)
  • Keywords and Members by Task
  • Visual Basic Reference
     
  • Visual Basic String Manipulation Tutorials
     
  • Top 10 Visual Basic Sins

     
    Учебники:
    Visual Basic для студентов и школьников. Культин Н. (2010)
    Занимательное программирование на Visual Basic.NET. Климов А. (2005)
    Visual Basic в задачах и примерах. Сафронов (2009)
    Visual Basic 2012 на примерах. Зиборов В. (2012)

  • Всего записей: 202 | Зарегистр. 29-12-2004 | Отправлено: 19:30 16-11-2005 | Исправлено: XPerformer, 10:07 28-10-2014
    Rush

    Уже за тридцать...
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Kafka17
    Спасибо за наводку. Сам как-то не сообразил. Затмение, видимо...
     Вот, может кому интересно или сгодится, в виде функции накропал:

    Код:
    Function GetSizeID3v2(ByVal strFileName As String) As Long
        Const MULT As Long = 128
        Const ID3V2HEADER = 10
        Dim ID3Pos As Long
        Dim bytArr() As Byte
        Dim arrSize(3) As Byte
        Dim ID3Head(2) As Byte
            ID3Head(0) = 73
            ID3Head(1) = 68
            ID3Head(2) = 51
        Dim MP3Head(1) As Byte
            MP3Head(0) = &HFF
            MP3Head(1) = &HFB
        Open strFileName For Binary Access Read Lock Write As #1
            ReDim bytArr(1 To LOF(1)) As Byte
            Get #1, , bytArr
            ID3Pos = InStrB(bytArr, ID3Head)
            If ID3Pos > 0 And ID3Pos < InStrB(bytArr, MP3Head) Then
                Get #1, ID3Pos + 6, arrSize
                GetSizeID3v2 = arrSize(0) * MULT * MULT * MULT + arrSize(1) * MULT * MULT + arrSize(2) * MULT + arrSize(3) + ID3V2HEADER
            Else
                GetSizeID3v2 = 0
            End If
        Close #1
    End Function
     

    Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 08:14 18-08-2007
    SergeiNG

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Люди помогите плиз  
    Не могу сконвертировать тип инт в тип байт в VB.NET
    Использую для этого CByte пишет постоянно overflow arifmetic
    Наведите на путь истинный плиз

    Всего записей: 4 | Зарегистр. 07-06-2007 | Отправлено: 12:30 20-09-2007
    ItsJustMe

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    b = i And &HFF

    Всего записей: 2028 | Зарегистр. 02-09-2005 | Отправлено: 17:35 20-09-2007
    SergeiNG

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ItsJustMe  
     Спасибо
    Типа того додумался и сам, пару сдвигов на 8 бит а потом CByte работает корректно  

    Всего записей: 4 | Зарегистр. 07-06-2007 | Отправлено: 17:52 20-09-2007
    BuzzL



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Совсем простая весчь но загрузила
    Нуно чтобы прога искала и выводила все трехбуквенные слова в предложении..

    Всего записей: 2 | Зарегистр. 25-09-2007 | Отправлено: 20:53 25-09-2007
    distance

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BuzzL

    Код:
    Sub test()
        Dim rx As New Regexp
        rx.Pattern = "(?:^|\s+)(\w{3})(?:\s+|$)"
        rx.Global = True
         
        Dim source As String
        source = "Load this text box with an example of the text you wish to search."
         
        Dim m As Match
        For Each m In rx.Execute(source)
            Debug.Print m.SubMatches.Item(0)
        Next
    End Sub

    надо подключить Microsoft VBScript Regular Expressions 5.5

    Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 00:14 26-09-2007
    DLysenko



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Господа, подскажите пожалуйста.
    Получаю данные по Microsoft Internet Transfer Control в переменную. То есть в переменной a лежит голый html
    мне нужно выдрать из html определенное слово, которое стоит после определенных символов и занимает определенное кол-во символов.
    например:
    html code.... A href="a=10d9f2534fee&"......html code
    то есть я точно знаю что нужное выражение идет после а=
    Вопрос - где можно посмотреть подобный исходник или как лучше провести поиск в переменной???
    была мысль по split, но в массиве получатся левые данные, которые не нужны....

    Всего записей: 21 | Зарегистр. 19-03-2006 | Отправлено: 08:00 26-09-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DLysenko
    Вон же выше написано использование Regular Expressions
    Найди вхождения href="a=, а затем с этих позиций + 7 найди положение " для каждого вхождения и Mid$, зная начало + 7 и конец

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 09:11 26-09-2007
    distance

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DLysenko
    собстна, предыдущий пример ты можешь практически без изменения передрать себе
    если предположить, что тебе нужно вытащить из текста всю бодягу, которая после 'a=' и до '&',
    тогда меняешь паттерн на такой:

    Код:
    rx.Pattern = "a\s+href=\""a=([^\&]+)"
    rx.IgnoreCase = True

    Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 16:47 26-09-2007 | Исправлено: distance, 16:50 26-09-2007
    BuzzL



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    distance
    Эммм)) Спасибо

    Всего записей: 2 | Зарегистр. 25-09-2007 | Отправлено: 18:21 26-09-2007
    distance

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BuzzL
    в паттерн, кстати, вкралась небольшая ошибка - в текущем состоянии оно не определяет второе слово, если данное слово следует сразу же за первым, например так: "111 222"
    надо использовать модификатор группы "Match suffix but exclude"
    (?:^|\s+)(\w{3})(?=\s+|$)

    Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 18:36 26-09-2007 | Исправлено: distance, 18:37 26-09-2007
    DLysenko



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AndVGri Большущее спасибо. Сильно помог. Даже с тем что в данном случае нужно использование Regular Expressions очень помогло.
    Я просто сделал поиск по  ([0-9a-f]{12}) - в данном случае находится именно этот код, состоящий из 12 символов.
    В данном случае все отлично сработало.
    Дальше применял другой поиск "IDZK=(./?)"""
    Нашлись все нужные координаты.
    Еще раз спасибо большое.
    Теперь думаю как лучше запихнуть все в базу....

    Всего записей: 21 | Зарегистр. 19-03-2006 | Отправлено: 18:48 26-09-2007
    Dahrax

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток. Господа, помогите пожалуйста в написании проги. Незнаю как обращатся с Visual Studio 2005. Задача такова ... Нужно расчитать функцию по с х меняющимся от 1.2 до 3. Собстно здесь проблем никаких нет. Проблема в том, что надо составить график изменения этой функции (графически). Подскажите плиииз с кодом. Нужно оооочень срочно. Заранее спасибо !

    Всего записей: 1 | Зарегистр. 30-09-2007 | Отправлено: 22:22 30-09-2007
    maratino



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
    Подскажите пожалуйста
    есть код
     
    Private Sub TextBox1_Change()
    If TextBox1.Text <> "" Then
        Range("A2").AutoFilter Field:=1, Criteria1:="=" & TextBox1.Text & "*", Operator:=xlAnd
    Else
        Range("A2").AutoFilter Field:=1
    End If
    End Sub
     
    Private Sub TextBox2_Change()
    If TextBox2.Text <> "" Then
        Range("B2").AutoFilter Field:=2, Criteria1:="=" & TextBox2.Text & "*", Operator:=xlAnd
    Else
        Range("B2").AutoFilter Field:=2
    End If
    End Sub
     
    который работает только с текстом
    как должен выглядеть код для работы с числами




    сказали же что код для ВБА, зачем его обсуждать не в той теме.

    Всего записей: 58 | Зарегистр. 11-03-2007 | Отправлено: 21:54 08-10-2007 | Исправлено: ShIvADeSt, 01:53 11-10-2007
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    maratino
    Это не VB, а VBA(VB for application). Вопрос для Excel VBA  
    PS. Разницы в работе быть не должно. Все зависит от того, что собираешься сделать.

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 23:25 08-10-2007
    maratino



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    нет, просто цифры отфильтровать, вот и все

    Всего записей: 58 | Зарегистр. 11-03-2007 | Отправлено: 23:53 08-10-2007
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    maratino
    Можешь попробовать использовать функцию Value

    Код:
    If Value(TextBox1.Text) = 8 Then

    или ISNUMBER

    Код:
    If ISNUMBER(TextBox1.Text) = True Then

    Value может быть лучше
     

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 02:10 09-10-2007
    VovaMozg



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Ребята помогите решить задачку. В общем есть 2 текстовых файла (большие куски из одного текста) один зашифрованый, другой незашифрованый. Нужно расшифровать зашифрованый файлик путём составления частот букв в файлах и замены.
    Уже практически сделал, вот код

    Цитата:
    Const alf_length = 256
    Const alf = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя "
    Dim massiv_from_normal_file(alf_length, 3)     'Массив символов в незашифрованном файле
    Dim massiv_from_shifr_file(alf_length, 4)     'Массив символов в зашифрованном файле
    Dim Shape_Width
    Const epsilon = 0.0015
    Const epsilon_1 = 0.0051
    Const my_round = 4
    Private Sub Command1_Click()
    'Сначала зададим нужные переменные
    'Открываем зашифрованный файл на чтение
    Set FSO = CreateObject("Scripting.FileSystemObject")
    'Открываем незашифрованный файл на чтение
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set File = FSO.GetFile(Text2.Text)
    Set TextStream = File.OpenAsTextStream(1)
    k_normal = 1
    While Not TextStream.AtEndOfStream
      'Читаем файл построчно
      temp_str = TextStream.ReadLine()
      temp_str = LCase(temp_str)
      For i = 1 To Len(temp_str)
      If Mid$(temp_str, i, 1) = "ё" Then Mid$(temp_str, i, 1) = "е"
      If Mid$(temp_str, i, 1) = "ь" Then Mid$(temp_str, i, 1) = "ъ"
      ok = False
        'перебираем все символы
        For j = 1 To k_normal
            If Mid$(temp_str, i, 1) = massiv_from_normal_file(j, 1) Then massiv_from_normal_file(j, 2) = massiv_from_normal_file(j, 2) + 1: ok = True
        Next j
        ok_1 = False
        For j = 1 To Len(alf)
         If Mid$(temp_str, i, 1) = Mid$(alf, j, 1) Then ok_1 = True
        Next j
        If (ok = False) And (ok_1 = True) Then massiv_from_normal_file(k_normal, 1) = Mid$(temp_str, i, 1): massiv_from_normal_file(k_normal, 2) = 1: k_normal = k_normal + 1
      Next i
    Wend
    k_normal = k_normal - 1
    TextStream.Close
    'Всё массив создали
    'Теперь отсортируем его
    For i = 1 To k_normal - 1
        temp_max = i
        For j = i To k_normal
            If massiv_from_normal_file(temp_max, 2) < massiv_from_normal_file(j, 2) Then temp_max = j
        Next j
        If temp_max > i Then temp = massiv_from_normal_file(i, 2): massiv_from_normal_file(i, 2) = massiv_from_normal_file(temp_max, 2): massiv_from_normal_file(temp_max, 2) = temp:      temp = massiv_from_normal_file(i, 1): massiv_from_normal_file(i, 1) = massiv_from_normal_file(temp_max, 1): massiv_from_normal_file(temp_max, 1) = temp
    Next i
    'Посчитаем сколько всего русских символов
    temp_simv_norm = 0
    For i = 1 To k_normal
     temp_simv_norm = temp_simv_norm + massiv_from_normal_file(i, 2)
    Next i
    'посчитаем частоту символов
    For i = 1 To k_normal
        massiv_from_normal_file(i, 2) = Round(massiv_from_normal_file(i, 2) / temp_simv_norm, my_round)
    Next i
     
    'отсортировали незашифрованный файл
    'выведем то что получилось
    Set File = FSO.GetFile(Text1.Text)
    Set TextStream = File.OpenAsTextStream(1)
    k_shifr = 1
    While Not TextStream.AtEndOfStream
      'Читаем файл построчно
      temp_str = TextStream.ReadLine()
      temp_str = LCase(temp_str)
      'перебираем все символы
      For i = 1 To Len(temp_str)
        If Mid$(temp_str, i, 1) = "ё" Then Mid$(temp_str, i, 1) = "е"
        If Mid$(temp_str, i, 1) = "ь" Then Mid$(temp_str, i, 1) = "ъ"
        ok = False
        For j = 1 To k_shifr
            If Mid$(temp_str, i, 1) = massiv_from_shifr_file(j, 1) Then massiv_from_shifr_file(j, 2) = massiv_from_shifr_file(j, 2) + 1: ok = True:
        Next j
        ok_1 = False
        For j = 1 To Len(alf)
         If Mid$(temp_str, i, 1) = Mid$(alf, j, 1) Then ok_1 = True
        Next j
        If (ok = False) And (ok_1 = True) Then massiv_from_shifr_file(k_shifr, 1) = Mid$(temp_str, i, 1): massiv_from_shifr_file(k_shifr, 2) = 1: k_shifr = k_shifr + 1:
      Next i
    Wend
    k_shifr = k_shifr - 1
    TextStream.Close
    'Теперь отсортируем массив по убыванию
    For i = 1 To k_shifr - 1
        temp_max = i
        For j = i To k_shifr
            If massiv_from_shifr_file(temp_max, 2) < massiv_from_shifr_file(j, 2) Then temp_max = j
        Next j
        If temp_max > i Then temp = massiv_from_shifr_file(i, 2): massiv_from_shifr_file(i, 2) = massiv_from_shifr_file(temp_max, 2): massiv_from_shifr_file(temp_max, 2) = temp: temp = massiv_from_shifr_file(i, 1): massiv_from_shifr_file(i, 1) = massiv_from_shifr_file(temp_max, 1): massiv_from_shifr_file(temp_max, 1) = temp
    Next i
    'Считаем сколько всего русских символов
    temp_simv_shifr = 0
    For i = 1 To k_shifr
     temp_simv_shifr = temp_simv_shifr + massiv_from_shifr_file(i, 2)
    Next i
    'Сделаем частоту
    For i = 1 To k_shifr
        massiv_from_shifr_file(i, 2) = Round(massiv_from_shifr_file(i, 2) / temp_simv_shifr, my_round)
    Next i
    'проставляем позиции
    'теперь в массив из шифрованного файла на 4-е место поставим позиции на которые будем заменять
    For i = 1 To k_shifr
        For j = 1 To k_normal
           ' If massiv_from_shifr_file(i, 3) = massiv_from_normal_file(j, 3) Then massiv_from_shifr_file(i, 4) = massiv_from_shifr_file(i, 4) + massiv_from_normal_file(j, 1) ': temp_ok = True
            If Abs(massiv_from_shifr_file(i, 2) - massiv_from_normal_file(j, 2)) <= epsilon_1 Then massiv_from_shifr_file(i, 4) = massiv_from_shifr_file(i, 4) + massiv_from_normal_file(j, 1)
        Next j
    Next i
    'если замена больше одной буквы, то берем её в скобки
    For i = 1 To k_shifr
        If Len(massiv_from_shifr_file(i, 4)) > 1 Then massiv_from_shifr_file(i, 4) = "(" + massiv_from_shifr_file(i, 4) + ")"
    Next i
    'Открываем зашифрованный файл на чтение
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set File_1 = FSO.GetFile(Text1.Text)
    Set File_2 = FSO.GetFile(Text3.Text)
    Set TextStream_1 = File_1.OpenAsTextStream(1)
    Set TextStream_2 = File_2.OpenAsTextStream(2)
     
    While Not TextStream_1.AtEndOfStream
      'Читаем файл построчно
      temp_str_1 = TextStream_1.ReadLine()
      temp_str_2 = ""
      For i = 1 To Len(temp_str_1)
        ok = False
        For j = 1 To k_shifr
           If Mid$(temp_str_1, i, 1) = massiv_from_shifr_file(j, 1) Then temp_str_2 = temp_str_2 + massiv_from_shifr_file(j, 4): ok = True
        Next j
        If ok = False Then temp_str_2 = temp_str_2 + Mid$(temp_str_1, i, 1)
      Next i
      TextStream_2.writeline (temp_str_2)
    Wend
    TextStream_1.Close
    TextStream_2.Close
    MsgBox "Готово"
    End Sub
     

     
     
    зашифрованный и незашифрованный файлик находятся тут:
    http://slil.ru/24956562
    Нужно лишь додлеть программу, чтобы получался нормально расшифрованный файл

    ----------
    В конце концов причина причин оказалась в начале начал...

    Всего записей: 761 | Зарегистр. 02-06-2005 | Отправлено: 17:00 09-10-2007
    maratino



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dneprcomp
     
    спасибо
    сейчас попробую
     
    Добавлено:
    dneprcomp
    что то ошибку выдает
    если не трудно, можно полностью код

    Всего записей: 58 | Зарегистр. 11-03-2007 | Отправлено: 22:43 09-10-2007 | Исправлено: maratino, 22:49 09-10-2007
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    maratino
    Если не трудно, можно полностью ошибку и свой код?  А еще лучше, свой xls файл. Я ведь понятия не имею что там делается и что должно происходить.

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 03:04 10-10-2007 | Исправлено: dneprcomp, 03:06 10-10-2007
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи на Visual Basic (VB).


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru