Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 25

Как заменить переменные извлекая из текстового документа

17.02.2017, 10:45. Показов 1303. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Возможно ли решить такой вопрос?

d - вводится в текстбокс
а в коде есть:
с = 5.65656 * d + 0.3332

Я сделал доп. форму, которая сохраняет в текстбоксе формулу для расчета с в .txt ну и соответственно извлекает.
Как сделать так, чтобы она (формула с= из .txt) заменяла формулу, которая есть в коде.

Например, открываем ехе файл, заводим формулу с= 4.56565 * d + 0.8989 нажимаем сохранить и формула заменила, имеющуюся в коде и уже считает с новой формулой пересчет с.

Помогите, если кто знает...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2017, 10:45
Ответы с готовыми решениями:

Переменные из текстового документа
Добрый день Столкнулся с проблемой. В файле (не *.pm, *.pl) находится текст, в котором находятся ссылки на локальные переменные...

Как перенести пароли из текстового документа в mysql
Добрый вечер.Имеется база с паролями,где-то 5-6 тысяч, раньше она хранилась в текстовом документе,появилась потребность перенести ее в БД...

Как сохранить программу в формате текстового документа?
:wall:

21
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
17.02.2017, 11:08
Ну как... программно все пересчитывать, есть еще класс в виндовсе
Set Script = CreateObject("MSScriptControl.ScriptCont rol")
Script.Eval(Expression) - Expression это математическое выражение

Добавлено через 4 минуты
а переменные лучше отображать так как они есть, не забывайте это же программа
2 + 3 / (3 * 2) никаких D B и тд

Добавлено через 2 минуты
2 + D / (B + A) =
2 + val(d) / (val(b)+val(a)) как то так ...
0
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
17.02.2017, 14:23
Birchall
Приведите, пожалуйста, ваш код программы.
А заодно более четко сформулируйте условия вашей
задачи. Где и что дано? Что заменить? ...
1
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 25
17.02.2017, 17:59  [ТС]
Допустим есть форма с двумя текстбоксами, кнопкой и меткой - вот код:
Visual Basic
1
2
3
4
5
6
Private Sub Command1_Click()
d = Val(Text1.Text)
c = 7.132 * d + 2.561
m = Val(Text2.Text)
Label1.Caption = ((c * 2 + 5) / (2 * m))
End Sub
и еще вторая форма с текстбоксом и кнопкой сохранить допустим вот код

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub CommandSave_Click()
Dim F
F = FreeFile
Open ("File.txt") For Output As #F
Print #F, TextC.Text
Close #F
End Sub
 
Private Sub Form_Load()
Dim F
Dim S As String
F = FreeFile
Open ("File.txt") For Input As #F
Input #F, S
TextC.Text = S
Close #F
End Sub
так вот на этой формуле в текстбокс заносится формула для расчета с и сохраняется в .txt (чтобы каждый раз не менять ее). Как сделать так, чтобы введеная формула для расчета с во второй форме заменила формулу для расчета с в первой.
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
17.02.2017, 18:25
Замените переменные словарем Dictionary или коллекцией
и можно также оперировать ими только вызываться они будут по ключу этой коллекции
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Form_Load()
    Dim c As Object
    Set c = CreateObject("scripting.dictionary")
    c.CompareMode = 1
    c("x") = 3
    c("y") = 2
    MsgBox c("x") + c("y")
    End
End Sub
Добавлено через 21 секунду
ответ: 5
1
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 25
17.02.2017, 18:32  [ТС]
и формула будет сохраняться после выхода из ехе или по новой? надо чтобы сохранялась
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
17.02.2017, 18:42
У вас формула в документе ? и вам надо чтото пересчитать
так вот извлекайте из текста латинские буквы пересчитывайте к примеру этим способом:
Script.Eval(c(s1) & p & c(s2))
где например s1 это первая переменная p это плюс p="+" или минус неважно или знак умножения
s2 это вторая переменная
а ответ также можно сохранить в документе
1
 Аватар для Sur_L
103 / 63 / 10
Регистрация: 13.02.2017
Сообщений: 178
17.02.2017, 18:43
Visual Basic
1
2
3
4
5
6
d = Val(Text1.Text)
'c = 7.132 * d + 2.561
ScriptControl1.ExecuteStatement "d = " & d
c = ScriptControl1.Eval(Form2.TextC.Text)
m = Val(Text2.Text)
Label1.Caption = ((c * 2 + 5) / (2 * m))
2
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
17.02.2017, 18:51
извлекли переменную A присвоили S1="A"
в коллекции с(s1) это ключ A и тд и тп

Добавлено через 4 минуты
Все легко, нужно только напрячь абстрактное мышление ))
1
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 25
17.02.2017, 19:03  [ТС]
Sur_L, а можно по конкретнее что к чему плс
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
17.02.2017, 19:08
Да тоже самое, только у него ScriptControl1 не объявлен
в байсике его объявлять надо или подключать
Set Script = CreateObject("MSScriptControl.ScriptCont rol")
Цитата Сообщение от Sur_L Посмотреть сообщение
ScriptControl1.ExecuteStatement "d = " & d
Ну да можно и так присваивать, я както в скриптах давно не юзил
1
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
17.02.2017, 19:43
Birchall

Формулу c = 7.132 * d + 2.561, которая находится в коде
вам заменить не удастся. Но если эта формула находится
в еще одном текстовом поле например txt3, то ее можно
вычислить
код приблизительно такой
Visual Basic
1
2
3
4
5
6
7
8
9
10
Dim T As String
 
d = Val(Text1.Text)
T = txt3.Text
 
a = Val(T)
k = InStr(T, "+")
b = Val(Mid(T, k))
 
c = a * d + b
Далее можете использовать вычисленную переменную с
так, как вы и делаете. Собственно говоря в поле txt3 можно
поместить аналогичное выражение.
Однако, если вам требуется вычислять совсем разные
арифметические выражения, то есть единственный способ
- это написать собственный интерпретатор арифметического
выражения
...
(вещь довольно сложная, но возможная)
1
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 25
17.02.2017, 20:03  [ТС]
echs, я это и хочу сделать))) она будет в текстбоксе на другой форме из .txt подгружаться. Можно как-то по подробнее плс?

Добавлено через 11 минут
echs, не знаешь как через scriptcontrol намутить чтото)
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
17.02.2017, 20:22
Ну вот же... все расжеванно извиняюсь что я пропустил язык скрипта ))
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Form_Load()
    Dim Script
    Set Script = CreateObject("MSScriptControl.ScriptControl"): Script.Language = "VBScript"
    Script.ExecuteStatement "a = 1"
    Script.ExecuteStatement "b = 2"
    Script.ExecuteStatement "c = 3"
    MsgBox Script.eval("a + b+ c")
    End
End Sub
Добавлено через 1 минуту
ответ 6

Добавлено через 2 минуты
вот таким макаром и подставляй свои формулы

Добавлено через 4 минуты
Как начнет получаться поделись этим радостным известием ))
2
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
17.02.2017, 20:24
Birchall

Алгоритм
1. присваиваете арифметическое выражение текстовой переменной
2. прибавляете к этой переменной слева открывающуюся скобку,
справа - закрывающуюся
3. ищете первую закрывающуюся скобку. (функция InStr())
Ее номер получает переменная с2.
4. ищете первую открывающуюся скобку от с2 (функция InStrRev())
Ее номер с1. (между этими скобками других скобок нет)
5. вычисляете выражение между с1 и с2 . Поскольку скобок нет,то
очередность операций определяется их приоритетом
приоритет
- (унарный минус)
^ (возведение в степень)
*, / (умножение и деление)
\ (целочисленное деление)
Mod (вычисление остатка)
+, - (сложение и вычитание)
6. после вычисления выражения в скобках производится
операция. Копируется все, что слева от левой скобки и все,
что справа от правой скобки. Части соединяются. А в середину
вставляется результат.
7. скобок стало на одну пару меньше
8. опять ищем первую закрывающуюся скобку.... и вычисления
повторяются.
9. если скобок нет. А У НАС ВСЁ ВЫРАЖЕНИЕ БЫЛО ЗАКЛЮЧЕНО
В СКОБКИ, то считать больше нечего.
10. последний результат и есть результат всех вычислений
1
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
17.02.2017, 20:29
echs, скрипт тоже неплохо скобочки считает
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Form_Load()
    Dim Script
    Set Script = CreateObject("MSScriptControl.ScriptControl"): Script.Language = "VBScript"
    Script.ExecuteStatement "a = 1"
    Script.ExecuteStatement "b = 2"
    Script.ExecuteStatement "c = 3"
    MsgBox Script.eval("(a + b) * c")
    End
End Sub
ответ 9

Это же тоже самое что в IDE среды писать только там текст, можно и корни и квадраты выводить
зачем велосипед изобретать ?

Кстате синтаксис должен быть такой же как и в среде тоесть +-*/\()^ и тд
2
 Аватар для Sur_L
103 / 63 / 10
Регистрация: 13.02.2017
Сообщений: 178
17.02.2017, 20:29
Birchall, Я написал готовое решение, а ScriptControl1.. ну я по старинке подключаю через компоненты (Microsoft Script Control 1.0) потом перетаскиваю на форму и объявлять не требуется.
2
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
17.02.2017, 20:35
fever brain
Я в скриптах не разбираюсь, а вот интерпретаторы писать приходилось
Но вам спасибо!
1
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
17.02.2017, 20:36
Цитата Сообщение от Sur_L Посмотреть сообщение
Я написал готовое решение
Да вы вообще молодец, надо только было еще строчку добавить Script.Language = "VBScript"
а так все в порядке, и я чтото новое узнал, чуть не увел автора топика в дебри коллекций и классов
пока не подсмотрел вашу строчку ExecuteStatement
1
0 / 0 / 0
Регистрация: 06.02.2017
Сообщений: 25
17.02.2017, 20:38  [ТС]
Спасибо всем участвующим)) я и не знал, что на этом форуме столько умных, а главное добрых, спешащих на помощь, людей)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.02.2017, 20:38
Помогаю со студенческими работами здесь

Как переменной присвоить содержимое текстового документа?
У меня есть текстовой документ и он хранится по адресу Assets\Text.txt. Как переменной присвоить содержимое данного документа?

Как вставить содержимое текстового документа в RichTextBlock?
У меня есть текстовой документ и он хранится по адресу Assets\Text.txt. Как вставить содержимое этого документа в RichTextBlock?

Как переместить содержимое текстового документа в string?
Помогите пожалуйста. текстовый документ формата .txt , извлечь для редактирования в String, и последующего вывода в Label (желательно иметь...

Как составить условие проверки текстового документа
Здравствуйте, подскажите как реализовать мою задачу У меня есть текстовый документ, в нём записаны числа от 1 до 224 Программа при...

Как поставить курсор в начало в поле текстового документа?
как сделать чтоб курсор становился автоматом в начало а не туда куда ты поставишь?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru