Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Задачи на Visual Basic (VB).

Автор: dneprcomp
Дата сообщения: 09.10.2009 07:41
5555555
С чем беда? Встроенный тулз работает достаточно хорошо и находит файлы и библиотеки коректно.
Можно посмотреть Inno Setup Бесплатен и наварочен.
При использовании любого инстал-бильдера надо всеравно знать самому какие файлы необходимы твоей программе. Что бы хотя бы можно было проверять.
Автор: 5555555
Дата сообщения: 09.10.2009 09:08
dneprcomp

Цитата:
С чем беда? Встроенный тулз работает достаточно хорошо
только он дубовый...

Цитата:
всеравно знать самому какие файлы необходимы твоей программе.
ну "руками" смотреть какие ocx и библ подключены и конкретные их версии, прописывать опять же руками в дистриб - это пардон - мазахизм.

Давно просто не нужен был именно дистриб - довольно быстро получилось так:
встроенным получаю зависимые (dep файл), из него копи-пэст в более цивильный редактор дистриб с правкой конечного месторасположения по необходимости.
Получается действительно - дул на воду

Но, все же лучше бы что-то более приличное было собственное...

Автор: zerkalo77
Дата сообщения: 14.10.2009 12:19
Всем привет.
Суть в следующем. Имеется форма. На ней label1. Необходимо присвоить label1.text полный путь файла, который перетаскивается на форму...

Другими словами как узнать путь файла, перетаскиваемого на форму? )

Добавлено:
Нашёл нечто подобное тут
http://bit.pirit.info/forum/viewtopic.php?p=49915#49915
Но в VB 2008 не работает. Ума не приложу, что делать...

Добавлено:
И снова всё решилось собственными силами)))

Создаём form1. Добавляем на неё label1.
Вставляем следующий код:

Код:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.AllowDrop = True
End Sub


Private Sub form1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
e.Effect = DragDropEffects.All
End If
End Sub

Private Sub form1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
Dim MyFiles() As String
Dim i As Integer

MyFiles = e.Data.GetData(DataFormats.FileDrop)
Label1.Text = ""
For i = 0 To MyFiles.Length - 1
Label1.Text += MyFiles(i)
if i <> MyFiles.Length - 1 then
Label1.Text += "|"
end if
Next
End If
End Sub
Автор: zerkalo77
Дата сообщения: 15.10.2009 12:16
Появился ещё один вопросик.
Но теперь то точно в одно лицо его мне не решить(((
Суть в следующем.
Имею форму. На форме FlowLayoutPanel1
добавляю в него кнопки (количество которых заранее неизвестно). Ну или не кнопки, а любой другой элемент. Не важно.
Me.FlowLayoutPanel1.Controls.Add(New System.Windows.Forms.Button)

Вопрос. Как обратиться к этому элементу не объявляя его? Т.е. задать его размер и свойства (имя, текст и т.п.)

Добавлено:
Эх. И опять всё собственными силами )


Код:
Private Моя_кнопка() As System.Windows.Forms.Button
Dim кол_во as integer

Private Sub добавить_кнопку()
Моя_кнопка(кол_во) = New System.Windows.Forms.Button
Me.FlowLayoutPanel1.Controls.Add(Моя_кнопка(кол_во))
кол_во+=1
End sub
Автор: zerkalo77
Дата сообщения: 16.10.2009 11:36
Новая задачка для мозга.

Копирую файлы псредством вот этого:
System.IO.File.Copy(sourseFileName, distFileName)

На форме имеется прогрессбар. Если копируются сотня маленьких файлов, то устанавливаю
progressbar1.maximum = количество_файлов
step = 1
и всё. С этим проблем нет. Проблемы начинаются, когда появляется необходимость
копировать один(или несколько), но большой файл. Как привязать прогрессбар не к количеству файлов, а к общему размеру копируемых файлов?
Автор: dneprcomp
Дата сообщения: 16.10.2009 20:51
zerkalo77
Посмотри
http://en.allexperts.com/q/VB-NET-3306/Progress-bar.htm
http://vbcity.com/forums/topic.asp?tid=36364
Автор: zerkalo77
Дата сообщения: 16.10.2009 22:27
dneprcomp
Спасибо.
Относительно первой ссылки - я уже и сам кое-что наваял:

Код:
Private Sub CopyFile(ByVal SourseFile As String, ByVal DestFile As String)
Progressbar1.Visible = True
Progressbar1.Value = 0
Dim FS As New System.IO.FileStream(SourseFile, System.IO.FileMode.Open)
Dim FW As New System.IO.FileStream(DestFile, System.IO.FileMode.CreateNew)
Dim Buffer() As Byte
ReDim Buffer(FS.Length - 1)
Progressbar1.Maximum = FS.Length
FS.Read(Buffer, 0, Buffer.Length)
For i As Int32 = 0 To Buffer.Length - 1
Progressbar1.Value += 1
FW.WriteByte(Buffer(i))
Next
FS.Close()
FW.Close()
Progressbar1.Visible = False
End Sub
Автор: gooner91
Дата сообщения: 19.10.2009 21:52
Доброе время суток!
Никак не могу решить такую вот задачу, а точнее только часть задачи:
Разработать приложение на Visual Basic Дана строка. Указать те слова, которые содержат хотя бы одну букву k.

Я никак не могу понять, какую часть кода программы нужно написать, чтобы при наличии только буквы k выводилось все слово целиком.
Заранее благодарен!
Автор: Rush
Дата сообщения: 20.10.2009 00:50
gooner91
Смотри в сторону регэкспов.
Автор: Rush
Дата сообщения: 20.10.2009 21:11
gooner91

Или можно (в простом случае) таким образом:
Код:
arrOut = Filter(Split(strSource), "k")
Автор: zerkalo77
Дата сообщения: 29.10.2009 17:17
Имеются 2 richtextbox.
Необходимо скопировать rtf из второго и добавить в первый.
Если копировать заменой, то нет ничего проще..
richtextbox1.rtf = richtextbox2.rtf

А как сделать так, чтобы текст из второго не заменил первый, а прибавился к нему?
richtextbox1.rtf += richtextbox2.rtf не работает.
Автор: InkvizitorAGDR
Дата сообщения: 08.11.2009 14:07
Привет народ! =)
Работаю я в Visual Studio 2008 SP1 (бэйски, естественно)
У мен такой вопрос: могу ли я каким то образом установить/имплантировать/отобразить в окне формы страничку из Word'а или сам Word документ. Мне нужно работать с ним напрямую.

Только если можно подробнее...

Вообще мне нужен полноценный редактор. Я в прнципе его почти сделал, но у мнея проблемы с картинкаи и проч. Если есть какие-то варианты, как сделать ПО ДРУГОМУ, но используя BASIC, то я буду рад выслушать их*.

*Возможно и не за бесплатно =)
Автор: Kurbatov666
Дата сообщения: 10.11.2009 19:26
Здравствуйте! Не подскажите как решить задачку на VB.
Как посчитать во введенном тексте количество числовых символов?
Автор: kpblc
Дата сообщения: 10.11.2009 19:59
По-моему, прямо так и будет - Length
Автор: zerkalo77
Дата сообщения: 11.11.2009 15:45
Kurbatov666

На форме textbox1, button1 и label1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim количество_числовых_символов As Integer
For i = 0 To TextBox1.Text.Length - 1
If Char.IsNumber(TextBox1.Text.Chars(i)) Then
количество_числовых_символов += 1
End If
Next
Label1.Text = количество_числовых_символов
End Sub
Автор: LeopoLius
Дата сообщения: 12.11.2009 20:10
Привет предо мной стоит задача написания шифрования(дешифрования) методом моноалфавитной замены. Есть проблемы в дешифровке, а также в Считывания из файла и записи в новый файл. Начал писать в Microsoft Visual Studio 2008 на VB 2008, вот что сейчас есть:ЁЁЁ

Код:
Public Class Form1

Dim i As Integer, j As Integer, intStrLen As Integer 'i,j, длина строки
Dim intKey1 As Integer, intKey2 As Integer 'ключи
Dim strAlph As String
Dim strTxtIn As String, strTxtOut As String 'входной и выходной текст
Dim strAsymb As String, strBsymb As String, intTempA As Integer, intTempB As Integer 'текущий символ

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
txtOut.Clear()
strTxtIn = txtIn.Text
intStrLen = Len(strTxtIn) 'определяем длину текста
intKey1 = Key1.Text
intKey2 = Key2.Text
strAlph = ("абвгдежзийклмнопрстуфхцчшщъыьэюя ,.;:123456789")

strTxtOut = ""
For i = 1 To intStrLen
strAsymb = Mid(strTxtIn, i, 1) 'берем i'ый символ из строки
intTempA = InStr(strAlph, strAsymb) 'определяем позицию символа i в алфавите
intTempB = ((intKey1 * intTempA) + intKey2) Mod (46) 'шифруем позицию=)
If intTempB = 0 Then intTempB = 46
strBsymb = Mid(strAlph, intTempB, 1) 'берем символ из алфавита с новой позиции
strTxtOut = strTxtOut + strBsymb

Next
txtOut.Text = strTxtOut
End Sub


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
txtOut.Clear()
strTxtIn = txtIn.Text
intStrLen = Len(strTxtIn) 'определяем длину текста
intKey1 = 1
intKey2 = 1

intKey1 = Key1.Text
intKey2 = Key2.Text
strAlph = ("абвгдежзийклмнопрстуфхцчшщъыьэюя ,.;:123456789")

strTxtOut = ""
For i = 1 To intStrLen
strBsymb = Mid(strTxtIn, i, 1) 'берем i'ый символ из строки
intTempB = InStr(strAlph, strBsymb) 'определяем позицию символа i в алфавите
If intTempB < intKey2 Then intTempB = intTempB + 33
intTempA = ((intTempB - intKey2) / intKey1) Mod (46) 'дешифруем позицию=)
If intTempA = 0 Then intTempA = 46
strAsymb = Mid(strAlph, intTempA, 1) 'берем символ из алфавита с новой позиции
strTxtOut = strTxtOut + strAsymb
Next
txtOut.Text = strTxtOut

End Sub


Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk


End Sub

Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click 'взять текст из файла
OpenFileDialog1.Filter = "*.txt|*.txt"
OpenFileDialog1.ShowDialog()
Dim tt As New String(OpenFileDialog1.FileName)
txtIn.Text = tt

Dim ff As Integer
ff = FreeFile()

FileOpen(FileNumber:=ff, FileName:=tt, Mode:=OpenMode.Input, Access:=OpenAccess.Read, Share:=OpenShare.LockWrite)

Dim zext As String
FileGet(ff, zext)
FileClose(ff)

txtIn.Text = zext
End Sub



Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
SaveFileDialog1.Filter = "*.txt|*.txt"
SaveFileDialog1.ShowDialog()
Dim SF As New String(SaveFileDialog1.FileName) 'ячейка где находится путь с именем файла

End Sub

Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk

End Sub
End Class
Автор: zerkalo77
Дата сообщения: 13.11.2009 16:58
LeopoLius
Для начала хотя бы так:
не
intKey1 = Key1.Text
intKey2 = Key2.Text
а
intKey1 = Val(Key1.Text)
intKey2 = Val(Key2.Text)
Тобишь защита от ввода текста вместо цифр.

Далее проверь, чтобы intKey1 не равнялся 0 ибо вот тут:
intTempA = ((intTempB - intKey2) / intKey1) Mod (46) 'дешифруем позицию=)
будет деление на ноль
что-то типа
if intKey1 =0 then
msgbox("Нули вводить ниньзя!!")
return
end if

На всяк тоже проделай и с intKey2


В итоге имеем

вместо
intKey1 = Key1.Text
intKey2 = Key2.Text

вставь вот это:
intKey1 = Val(Key1.Text)
intKey2 = Val(Key2.Text)
if intKey1 =0 then
msgbox("Нули вводить ниньзя!!")
return
end if
if intKey2 =0 then
msgbox("Нули вводить ниньзя!!")
return
end if

Приду домой - продолжу)
Автор: zerkalo77
Дата сообщения: 17.11.2009 14:11
LeopoLius
А вообще система шифрования у тебя, извини конечно, идиотская. Т.е. ты теряешь множитель.
Ща объясню.
Например
имеется строка
1234567890
ключ1 = 4
ключ2 = 5
ты шифруешь цифру "3"
"3" - 3-й символ в строке "1234567890"
вот формула шифрования
10- количество символов в строке
(3*4 + 5) /10 и взять остаток
17/10 = 1 и остаток 7

Дык вот эту единицу(n) ты как раз и отбрасываешь "в воздух" и вернуть исходное положение символа не представляется возможным
ибо
(7-5)/4 - не вариант

для начала нужно к 7 прибавить n*10
правильная дешифровка должна быть такой
(остаток + n*10 - ключ2)/ключ1
где n - целое число полученное при делении. Число десяток.

Как вариант - обычное линейное шифрование.
новое_положение_в_строке = старое_положение_в_строке + ключ
дешифровка
старое_положение_в_строке = новое_положение_в_строке - ключ

либо рассмотри вариант, описанный мною ранее (побайтное шифрование)
http://forum.ru-board.com/topic.cgi?forum=33&topic=5993&start=660#18
Автор: LeopoLius
Дата сообщения: 18.11.2009 13:27
ОК спс!, добрался до нета, до компа щас поправлю все и зарезультирую.

единственная мысль по нахождению n разбить оператор Mod на несколько простых операций: узнал много нового о деление с остатком. Но деление идет на каждый отдельный символ и у каждого может быть свое кол-во переходов по алфавиту(n). наверное надо создать переменную стринговую и в нее заносить по одному значению с каждого символа, а при де шифровке по одной переменной брать.
но как тогда быть когда шифрованный текст берется из стороннего файла?
Автор: zerkalo77
Дата сообщения: 18.11.2009 14:41
Да найти то n не проблема. Имеется ввиду при шифровании.
Например в строке:
intTempB = ((intKey1 * intTempA) + intKey2) Mod (46) ' шифруем позицию
N = ((intKey1 * intTempA) + intKey2) \ (46) ' вот тебе и N

Вопрос в другом - как и где это значение хранить?

Добавлено:
А чем вызвано такое настойчивое желание использовать метод моноалфавитной замены? Почему не побайтово? Там же всё проще пареной репы)
Берём файл
Загружаем его в массив байт
берём каждый отдельный байт и изменяем его значение.
(В том примере, который у меня, каждый чётный байт увеличивался на 1, а каждый нечётный уменьшался на 1.Хотя принцип может быть и другим)
Автор: SanSagittarius
Дата сообщения: 29.11.2009 20:13
Ребята, прошу прощения, если не в тему или если этот вопрос уже рассматривался.

Не первый год разрабатываю базы данных на Access+VBA, но столкнулся с задачей, которую пока не могу осилить - как можно отловить событие Windows на входящем звонке по IP-телефонии и открыть форму Access? Признаться, за рамками Access+VBA большого опыта программирования нет..

Хочу реализовать что-то вроде Call-Center - на входящем звонке оператору открывается окошко для записи информации по проблеме. Походив по форумам я не нашел информации о том, как это реализовать - может быть здесь кто-то подскажет?

Буду очень признателен за любую информацию: какое событие, какая API, как отслеживать и т.д. Понимаю, что можно воспользоваться уже готовыми решениями, но все же хотелось бы добиться своими силами, если это не очень уж сильно сложно.
Автор: zerkalo77
Дата сообщения: 30.11.2009 16:39
SanSagittarius
Ну для начала намекну что это топик НЕ VBA.
Каким бы путём пошёл я:
1. Для начала нужно значть что за клиент IP телефонии. Возможно имеются исходники. Что из себя представляет входящий звонок* Если я правильно понимаю, то клиент телефона прослушивает некий порт, на который, при входящем звонке, приходят пакеты определённого протокола. Т.е. твоя задача выяснить какой порт слушать и какой протокол принимать... Как дешифровать принятые пакеты и т.д и т.п. А уже потом писать на VB свой клиент IP телефонии для этих целей.
PS. Чтоб было понятнее QIP для ICQ.
Автор: GenyaMS
Дата сообщения: 03.12.2009 12:22
Доброго времени суток!

Применение VB для написания макроса в программе SolisWoorks_2009.
Тот же вопрос и непосредственно по VB 6.
Проблема в следующем: Пишется макрос, например для построения вала, размеры задаются через форму. при создании на поле формы объекта TextBox1 - в него вводится диаметр вала в TextBox2 - длина вала. В переменные программы считываются данные из полей формы их свойства Text.
Например: Diam = TextBox1.Text
Hight = TextBox2.Text
при вводе целочисленных значений в поля формы программа нормально их воспринимает, а вот при вводе значений через запятую 1.34 и 4.56 - ругается принимает их за текстовые данные. Переменные описанны как Single.
Что можно сделать чтобы вводить через текстовое поле формы не только целочисленные значения?
Автор: kpblc
Дата сообщения: 03.12.2009 13:12
Заменить "." на тот разделитель целой и дробной части, который используется в системе.
Автор: zerkalo77
Дата сообщения: 03.12.2009 16:42
GenyaMS
Ругается на 1,34 или на 1.34?
Или и на то и на то?
У меня была ситуация, когда не воспринимал точки, но корректно работал с запятыми. Я сделал следующим образом:

Function преобразовать(ByVal текст As String) As Single
Dim текст2 As String
For i = 0 To текст.Length - 1
If текст.Chars(i) = "." Then текст2 += "," Else текст2 += текст.Chars(i)
Next i

Return Convert.ToSingle(текст2)
End Function


Соответственно в коде будет:
Diam = преобразовать(TextBox1.Text)
Hight = преобразовать(TextBox2.Text)

После внесения этой функции будет абсолютно не важно точки ты используешь или запятые...
Автор: GAYUSHA
Дата сообщения: 03.12.2009 21:10
ПОМОГИТЕ РЕШИТЬ ЭТО ПОЖАЛУЙСТА !

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

3. Обработка числовой последовательности с неопределенным количеством элементов.
Определить количество чередований простых и составных членов
последовательности с неопределенным числом элементов.

Я ВООБЩЕ В ЭТОЙ ПРОГРАММЕ НЕ ОСОБО РАЗБИРАЮСЬ,(((( вот что у меня получилось ноя не уверена что правильно это

Dim n%, a%, max%, n_max%, min%, n_min%, i%
n = InputBox("введите кол-во эелементов")
Text1.Text = Str(n)
a = InputBox("введите первый элемент")
List1.Clear
min = a: n_min = 1
max = a: n_max = 1
List1.AddItem Str(a)
Randomize
For i = 2 To n
a = Int(Rnd * 10) - 5
List1.AddItem Str(a)
Next i
Автор: GenyaMS
Дата сообщения: 04.12.2009 06:39

Цитата:
zerkalo77


Цитата:
Ругается на 1,34 или на 1.34?


Спасибо примерно так я сейчас и делаю, считываю как текстовую переменную - нахожу разделитель (символ точки или запятой), записываю каждую часть в отдельные переменные, а потом с помощью математики преобразовываю в число с запятой...
Но ищу путь по проще... Чтобы какое-нибудь одно свойство в настройках программы поменять и все было в шоколаде...


Цитата:
kpblc


Цитата:
Заменить "." на тот разделитель целой и дробной части, который используется в системе.

А где в настройках системы его можно посмотреть?


Автор: kpblc
Дата сообщения: 04.12.2009 07:11
В реестре. HKEY_CURRENT_USER\Control Panel\International ключ sDecimal.
Автор: GenyaMS
Дата сообщения: 04.12.2009 07:37
kpblc

стоит ","
Автор: land3D
Дата сообщения: 04.12.2009 21:18
Люди помогите пожалуйста решить две задачи в бейсике, очень срочно, если нетрудно- решите.
Задачи оч легкие (я прост в програмировании полный ламмер))))
№1
Составить программу вводящую с клавиатуры произвольное число и вычисляющую sin
этого числа. Для расчета ипользовать последовательность:

sin(x)=x-x^3/3!+x^5/5!-x^7/7!+...+(-1)^n-1*x^2n-1/(2n-1)!

Точность расчета- 0,001
Результат расчета вывести на экран.


№2
Запрограмировать расчет сумм приведенного ряда:

Arcsinx=x+1/2*3 *x^3+1*3/2*4*5 *x^5+1*3*5/2*4*6*7 *x^7...

С точностью 0,001

Помогите пожалуйста!!!)

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940

Предыдущая тема: для Hiper-six (индексы .nsx .smt) хоть что нибудь Опции


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.