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

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

Автор: RER_27
Дата сообщения: 01.11.2008 20:38
Ребята, может кто поможет........
Препод ничего не объясняя задал задание:

Создать проект, в котором с помощью псевдографических операторов
построить графики функций, полученных от интегрирования системы
дифференциальных уравнений вида:
dYa/dX = - A1*Ya
dYb/dX = A1*Ya – A2*Yb
dYc/dX = A2*Yb
при: Ya(0) = A0; Yb(0) = 0 Yc(0) = 0
Коэффициенты полинома задать на форме. Из полученного графика
выбрать произвольный диапазон, в котором методом трапеций необходимо
определить значение определенного интеграла с заштриховыванием
интегральной области.

.... примерно видел, что создаются Text1 и Text2, Command1
.... а куда чего вводить, чтобы график этот вышел не знаю.


Автор: sVIKs
Дата сообщения: 05.11.2008 19:45
Я повторюсь, но...

Надо с микрофона получить звук и разложить на частоты(спектр частот).Я знаю, делается это с помощью БПФ(сам модуль БПФ у меня есть, взято с alglib.sources.ru), а вот дальше проблема, не знаю как пользоваться данным модулем, да и не совсем понятно как это потом можно вывести, причем так, чтобы можно было разложить на диапазон высоких и низких частот, может кто-то сможет помочь? Был бы безмерно благодарен.
Автор: GuitarloverX
Дата сообщения: 08.11.2008 21:18
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Помогите плиз..
Вот строка бат файла:
echo Do Until v>=1 >> %temp%\temp.vbs
а созданная строка в temp.vbs получается такая:
Do Until v

А если в бате так:
echo Do Until v<=40 >> %temp%\temp.vbs
то в скрипт строка не пишется вообще.

Мне что-то не допереть, что надо сделать, чтобы строка писалась целиком...

И ещё вопросик:
как убить процесс, например explorer?
Что-то вроде этого? :
s.run "Rundll32 explorer.exe, ???exit???"
или как нить по другому?
как загрузить процесс, к примеру его же?


О! Вспомнил, ещё интересует как сделать чтобы скрипт срабатывал к примеру через 20 минут после загрузки компа? или вообще каждые 20 минут? )))

Эх, когда нибудь я стану большим и умным, а пока помогите плиз =)
Автор: ItsJustMe
Дата сообщения: 08.11.2008 23:23
1: Напиши скрипт на самом vbs. Уверен, впрочем, что есть простой способ редиректить строки с символами < > , но моя лень не позволила его найти.
2: PsTools
3: use "sleep <number of seconds>" in command prompt (and loops)
Автор: GuitarloverX
Дата сообщения: 09.11.2008 17:56
ItsJustMe
Спасибо.
Вопросы сняты, подсказали
Автор: RER_27
Дата сообщения: 10.11.2008 14:02

Цитата:
Ребята, может кто поможет........
Препод ничего не объясняя задал задание:

Создать проект, в котором с помощью псевдографических операторов
построить графики функций, полученных от интегрирования системы
дифференциальных уравнений вида:
dYa/dX = - A1*Ya
dYb/dX = A1*Ya – A2*Yb
dYc/dX = A2*Yb
при: Ya(0) = A0; Yb(0) = 0 Yc(0) = 0
Коэффициенты полинома задать на форме. Из полученного графика
выбрать произвольный диапазон, в котором методом трапеций необходимо
определить значение определенного интеграла с заштриховыванием
интегральной области.

.... примерно видел, что создаются Text1 и Text2, Command1
.... а куда чего вводить, чтобы график этот вышел не знаю.


..... хотя бы что вводить в Text1 ; Text2 и Command1
Автор: Legio
Дата сообщения: 10.11.2008 17:50
А что непонятно-то?.. Кроме "интегрирования системы дифференциальных уравнений" (про которое я давно и успешно забыл и которого VB не умеет, насколько мне известно -- если я правильно интерпретирую задачу, конечно же) всё довольно просто.
В Text1 и Text2, скорее всего, те самые "коэффициенты полинома" и вводятся. По нажатию на Command1 рисуется график для заданных коэффициентов (как предполагается выбирать "произвольный диапазон", правда, не очень понятно -- но хоть inputbox'ами устанавливать, главное откуда-нибудь установить). Границы графика, судя по условиям, должны быть прописаны самостоятельно где-то внутри программы. Равно как и шаг, с которым будет рисоваться график (ну, там, от -100 до 100 с шагом 0,1, скажем -- типа такого вот).
Непосредственно для рисования в данном случае нужен будет только Line. Заштрихованные прямоугольники тоже рисуются им, да; заполнение прямоугольника -- штриховка в данном случае -- задаётся свойством FillStyle, если рисовать будете по форме -- свойством FillStyle формы, если по PictureBox'у -- свойством FillStyle PictureBox'а и т. п.
Ещё неплохо понять, как работают Scale*-свойства, но это не очень сложно, а можно и вовсе без этого обойтись.

Так что, повторюсь, что непонятно-то?
Автор: RER_27
Дата сообщения: 11.11.2008 08:26
Legio

Не понятно как задавать массив.....DIM и т.д., как выглядит прога......
С пределами и шагом графика можно позже разобраться.... подогнать....
Чайник я в этом.... и препод говорит: "додумывайте сами".... вот так.
Если можешь и есть возможность помоги.
Методичка - так нагляднее.
Лаба2, вариант 10
Автор: RER_27
Дата сообщения: 18.11.2008 11:05
Ну всё....... двойка обеспечена.
Автор: Igor_V_Mitichev
Дата сообщения: 25.11.2008 12:43
Граждане, есть ли у кого код, обеспечивающий проход по всем подкаталогам дерева и выполняющий там определенные действия?

То есть вот сам алгоритм обхода дерева у меня как-то в голове не формируется...
Программер я никакой, опыта нет. Может дадите правильное направление, в какую сторону думать? Дерево большое. Команда dir /s/b/ad D:\share\ > dirs_spisok.txt создала файл из 4915 строк.

Можно, конечно, теперь этот файл открыть и пройтись по каталогам циклом

Open "dirs_spisok.txt" For Input As #1
Do Until EOF(1)
Line Input #1, RunningFolder

действия в каталоге RunningFolder

Loop
Close #1

но хотелось бы обойтись без внешних утилит.


И еще один вопрос. Я из книжки не понял, как правильно открыть несколько файлов.

Dim file1, file2, file3 as New TextStream
set fso = CreateObject("Scripting.FileSystemObject")

set file1=fso.OpenTextFile("c:\temp\file1.txt"), ForWriting)
set file2=fso.OpenTextFile("c:\temp\file2.txt"), ForWriting)
set file3=fso.OpenTextFile("c:\temp\file3.txt"), ForWriting)

операторы программы

file1.close
file2.close
file3.close

Так что-ли? То есть вот эту set fso = CreateObject("Scripting.FileSystemObject") достаточно один раз объявить на все случаи жизни, или для каждого файла ее надо по-новой объявлять?

И, если это будет не сильным нарушением топика, то как открыть эти же три файла в VBS?

Добавлено:
И еще. Сейчас попробовал - оно у меня не работает почему-то...
http://f9n6001.narod.ru/tmp/fso.jpg
В чем косяк?
Автор: dneprcomp
Дата сообщения: 25.11.2008 19:51
Igor_V_Mitichev
http://vb.mvps.org/samples/project.asp?id=DirDrill
http://www.xtremevbtalk.com/archive/index.php/t-5050.html
http://www.codeproject.com/KB/vb/dirsinc.aspx
http://www.visualbasic.happycodings.com/Files_Directories_Drives/code55.html

http://www.google.com/search?hl=en&q=vb+dir+recursive

Цитата:
оно у меня не работает почему-то...

Цитата:
To use FileSystemObject, you must select the Microsoft Scripting Run-time in the Project References dialog box for your project.

http://support.microsoft.com/kb/186118
http://www.virtualsplat.com/tips/visual-basic-fso.asp

Цитата:
То есть вот эту set fso = CreateObject("Scripting.FileSystemObject") достаточно один раз объявить на все случаи жизни, или для каждого файла ее надо по-новой объявлять?
Достаточно однго присвоения.
Автор: Legio
Дата сообщения: 25.11.2008 20:21
dneprcomp
Оно, боюсь, по другому поводу не работает -- на снэпшоте Set вне процедуры/функции написан.
Автор: dneprcomp
Дата сообщения: 25.11.2008 22:32
Legio
Ты прав. Совершенно не обратил внимания.
Автор: Igor_V_Mitichev
Дата сообщения: 26.11.2008 09:03
Legio

Цитата:
на снэпшоте Set вне процедуры/функции написан


Но если set писать в процедуре, то все равно сначала надо его объявлять через dim?

dim fso as что-то?

потому что внутри функции наблюдается та же самая потеха:
http://f9n6001.narod.ru/tmp/fso2.jpg
Автор: Legio
Дата сообщения: 26.11.2008 17:05
Ну, хм, типа да, переменную надо объявить (ровно потому, что Option Explicit выставлено). И если Microsoft Scripting Run-Time, как верно заметил dneprcom, подключено -- всё должно будет работать.

Добавлено:

Цитата:
та же самая потеха

Совершенно другая. В первом случае было вполне по делу написано -- "Invalid outside procedure". В этом, и тоже по делу, -- "Variable not defined".
Автор: dneprcomp
Дата сообщения: 26.11.2008 20:33
Igor_V_Mitichev
Путаешь объявление - Dim с присвоением - Set
В конце концов, можешь делать обе в процедуре. Но тогда в другой процедуре надо будет объявлять опять(смотри SCOPE или в хелпе)

PS. Переменную надо объявлять не потому, что Option Explicit выставлено, а потому, что НАДО
Автор: Barbukas
Дата сообщения: 27.11.2008 21:13
Извините, ошибочно написал не в тот форум!

Прошу модератора удалить данное сообщение!
Автор: sadasaf
Дата сообщения: 03.12.2008 03:16
есть список сайтов (грубо говоря папки). необходимо в каждой конкретной папке (задан список) добавить конкретных юзеров (также задаются) и дать им конкретные права (Read Execute, Read Execute Modify).
т.е. допустим папка А, если есть в неё добавляется юзер А1, в папку А2 если есть юзер А1 и А2... ну это уже лирика.
Далее разрешить наследование и принудительно заменить права всем чайлдам текущими правами (2 галочки в Advanced Options)

Интересует как это автоматизировать, опыта с VB совсем нет, но что-то мне подсказывает что в cmd это сделать нереально
Автор: apexfmm
Дата сообщения: 03.12.2008 09:42
sadasaf
Даже не думай, установка прав доступа - это API + вызов системных библиотек.
Поройся в готовых модулях (интернет тебе в руки!) и пошукай установку прав доступа.
Автор: Igor_V_Mitichev
Дата сообщения: 03.12.2008 16:12
apexfmm

Цитата:
Даже не думай, установка прав доступа - это API + вызов системных библиотек.
Поройся в готовых модулях (интернет тебе в руки!) и пошукай установку прав доступа.


imho такие вещи проще решить здесь "задачах на bat-файлах". Только я не понял, в каком формате у него прописано соответствие пользователей и папок, и соответственно, каким образом вычленять параметры командной строки для cacls.

Кстати, можно поискать и cacls.vbs. Я как-то давно на его на сайте microsoft натыкался...
Автор: sadasaf
Дата сообщения: 03.12.2008 18:51
Обработка файлов данных.
Исходные данные о предприятиях: код, название, год начала реконструкции (не ранее 1995г., число лет реконструкции не более пяти), год окончания реконструкции (не позже 2005 г.), планируемые затраты на каждый год реконструкции. Число предприятий не определено. Записать данные в файл. Используя данные в файле, найти общие планируемые затраты на реконструкцию за заданный год.


Автор: sadasaf
Дата сообщения: 04.12.2008 18:05
ау есть кто
Автор: vikas612
Дата сообщения: 05.12.2008 11:19
Подскажи те ... мне что делать.
Есть макрос открывающий лист киги и делающий автофильтр.
Он всё что надо находит.
А дальше проблема.Выделяю и копирую диапозон в другой лист.Вроде всё нормально.
Но вот стоит данным изменится или добавится и он копурует с диапозона старые данные.А те что прошли снова автофильтр сдержится уже в других ячейках столбцов.
Т.е. они свдинулись или в одну вверх или вниз. А как тогда надо выделить диапзон после автофильтра что бы он понимал что это те данные а не усторевшие.

Кто знает подскажите..
Автор: Shader378
Дата сообщения: 08.12.2008 14:29
Привет всем помоги те пожалуйста, есть задача по VB6 а лекции были не очень ,немного непонятно как делать
Условие:Получить матрицу B(M,N) путем из матрицы А(M,N) путем переставлением столбцов первого с последним, второго с предпоследним и т.д.
Автор: Stitchi16
Дата сообщения: 08.12.2008 16:52
Задача сохранить матрицу (3х3) и т.д. в бд access, как можно сделать загрузку и выгрузку результирующией матрицы(DataGreed).
Автор: Legio
Дата сообщения: 08.12.2008 19:57
Shader378
Это не та задача, по которой "лекции были не очень" хоть на что-нибудь влияло бы. Необходимы для решения: а). знать, что есть такая штука, массивы (aka матрицы); б). знать, что есть такая штука, как For.


Код:
' число строк
Const M = 4
' число столбцов
Const N = 5

Dim i As Integer, j As Integer
Dim A(1 To M, 1 To N) As Double
Dim B(1 To M, 1 To N) As Double


' заполнение матрицы A чем-нибудь
Randomize

For i = 1 To M

For j = 1 To N

A(i, j) = Rnd()

Next j

Next


' перестановка столбцов матрицы A в матрицу B
For i = 1 To M

For j = 1 To N

B(i, (N - j + 1)) = A(i, j)

Next j

Next
Автор: Shader378
Дата сообщения: 08.12.2008 22:33
Legio спасибо тебе большое.. Нам просто показали как объявлять матрицы,циклы мы тоже проходили но до меня не дошло как связать все это...

Вот еще одна проблема с другим заданием нужно в матрице-строке упорядочить числа по возрастанию и убыванию(повесив эти операции на разные кнопки соответственно)

у меня не проходит написанный ниже цикл( выделяет желтым 5ую строку, массив объявлен до этого цикла, Text1 - текстовое поле в которым записан исходный массив), в чем там ошибка, или я вообще не правильно делаю


Код:
Private Sub butVozrastanie_Click()
Text1.Text = vbClear
Dim TempItem As String
For i = 1 To 10
If Massiv(i) > Massiv(i + 1) Then 'если один элемент больше другого то меняем их местами
TempItem = Massiv(i)
Massiv(i) = Massiv(i + 1)
Massiv(i + 1) = TempItem
End If
Next i
End Sub
Автор: Legio
Дата сообщения: 09.12.2008 04:51
Shader378
Где он объвлен? Внутри функции (как локальная переменная)?
Кроме того, размерность массива какая? От 1 до 10? Тогда в последней итерации (при i = 10) непременно будет ругаться -- сравниваются Massiv(10) и Massiv(11), но 11-го элемента у массива нет. (Короче говоря, проще привести весь код).


Цитата:
и как сделать чтобы упорядоченный массив перезаписал исходный в текст поле Text1


Код:
Dim TempString As String

For i = 1 To 10

TempString = TempString & vbCrLf

Next i

Text1.Text = TempString
Автор: Shader378
Дата сообщения: 09.12.2008 07:19
Legio

Вот весь код который я сделал


Код:
Dim Massiv(1 To 10)

Private Sub but_enter_items_Click() 'при нажатии на эту кнопку ввод массива с клавиатуры

For i = 1 To 10

Massiv(i) = Val(InputBox("Enter Item number" & i))

Text1.Text = Text1.Text & " " & Massiv(i)
Next i

End Sub


Private Sub butVozr_Click()

Text1.Text = vbClear

Dim TempItem As String

For i = 1 To 10

If Massiv(i) > Massiv(i + 1) Then 'если один элемент больше другого то меняем их местами

TempItem = Massiv(i)

Massiv(i) = Massiv(i + 1)

Massiv(i + 1) = TempItem

End If

Next i

End Sub

Private Sub butUbyvanie_Click()

Text1.Text = vbClear

Dim TempItem2 As String

For i = 1 To 10

If Massiv(i) < Massiv(i + 1) Then 'если один элемент меньше другого то меняем их местами

TempItem2 = Massiv(i)

Massiv(i) = Massiv(i + 1)

Massiv(i + 1) = TempItem2

End If

Next i

End Sub
Автор: Mont1
Дата сообщения: 09.12.2008 10:35
Stitchi16

Цитата:
Задача сохранить матрицу (3х3) и т.д. в бд access, как можно сделать загрузку и выгрузку результирующией матрицы(DataGreed).

Загрузка

datPrimaryRS.Recordset.AddNew
datPrimaryRS.Recordset.Fields(0) = a(i,1)
datPrimaryRS.Recordset.Fields(1) = a(i,2)
datPrimaryRS.Recordset.Fields(2) = a(i,3)
datPrimaryRS.Recordset.Update
datPrimaryRS.Refresh

Восстановление

datPrimaryRS.Recordset.MoveFirst
for i=1 to 3
a(i,1)=datPrimaryRS.Recordset.Fields(0)
a(i,2)=datPrimaryRS.Recordset.Fields(1)
a(i,3)=datPrimaryRS.Recordset.Fields(2)
datPrimaryRS.Recordset.MoveNext
next i

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940

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


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