Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: >> Текст в качестве КОДА << Добавлено: 15.11.05 15:03  

Автор вопроса:  AgentFire | ICQ: 192496851 
Как можно это дело юзать?
Я знаю, был топик, но с поиском лаги ;((( а диск мне форматнули

Ответить

  Ответы Всего ответов: 24  

Номер ответа: 1
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #1 Добавлено: 15.11.05 15:08
MS Scripting Runtime :)

Ответить

Номер ответа: 2
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #2 Добавлено: 15.11.05 15:10
Ну, если точнее - MS ScriptControl

Ответить

Номер ответа: 3
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #3 Добавлено: 15.11.05 17:57
И где его такой достать..? ;(

Ответить

Номер ответа: 4
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #4 Добавлено: 15.11.05 18:04
О, нашел :) но...
мне вобщем надо переменной intValue присвоить значение в текстбоксе, но выполненное, например:

Text1[.text] = "5 + 6 * (sqr(256) + 48 * sin(30))"
intValue = ... ну надо, чтоб решилось ето дело ;(

Ответить

Номер ответа: 5
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #5 Добавлено: 15.11.05 18:13

Private Sub Form_Load()
Dim MSC As New ScriptControl
MSC.Language = "VBScript"
Text1.Text = "5 + 6 * (sqr(256) + 48 * sin(30))"
MsgBox MSC.Eval(Text1.Text)
End Sub

Ответить

Номер ответа: 6
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #6 Добавлено: 15.11.05 20:30
нет, Noviks имеет ввиду полный текст программы заставить работать... т.е. к примеру "Text1.Text="test" " и чтобы этот текст выполнил соответствующие действие, т.е. сделал значение в Text в Text1 равным "test". Я даже видел нечто подобное, реализовано было через ф-цию EbExecuteLine, которая находится в vba6.dll Всё бы ничего, но работает она в пределах IDE, а когда компилируешь... неработает, уже непомню что за ошибка была, но факт что была...

Ответить

Номер ответа: 7
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #7
Добавлено: 15.11.05 23:01
Помнится все попытки его использования вылетают с крахом...

Ответить

Номер ответа: 8
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #8 Добавлено: 16.11.05 11:15
Ну дык какие проблемы? Тот же Script Control, через AddCode выполняешь код что тебе нужен.
Только два ньюанса - все переменные только Variant и не передавать скалярные величины по ссылке - глючно работает.

Private Sub Form_Load()
Dim MSC As New ScriptControl
MSC.Language = "VBScript"
Dim ScriptFunction As String
ScriptFunction = "Public Sub SetText (TextObject, Text)" & vbCrLf & "On error resume next" _
& vbCrLf & "TextObject.Text=1" & vbCrLf & "End Sub"
MSC.AddCode ScriptFunction
MSC.AddObject "Text1", Text1
MSC.AddCode "SetText Text1, 1"
End Sub

Ответить

Номер ответа: 9
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #9 Добавлено: 16.11.05 11:17
Это как пример, конечно. То есть он задачи вопроса не реализует, но вместо 1 поставить нужный текст и добавить вычисление не проблема если суть ухватил :)

Ответить

Номер ответа: 10
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #10 Добавлено: 16.11.05 13:24
Не LOL, AddObject некатит тут, мы ж типа незнаем какие и где объекты будут, хотим чтобы программа сама разобралась и выполнила действие, т.е. скомпилировала наш текст в программу и выполнила его... а такого небыват... а через ScriptControl это не то...

Ответить

Номер ответа: 11
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #11 Добавлено: 16.11.05 14:48
ну как же не бывает?! ;((

Ответить

Номер ответа: 12
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #12 Добавлено: 16.11.05 15:09
а где ты такое видел? Чтобы к уже скомпилированной программе добавить код и чтоб она его выполнела? Например Pinch заново компилирует, т.е. с собой таскает компилятор, ты выдираешь какие модули нужны, он компилирует и получается exe... подругому никак...

Ответить

Номер ответа: 13
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #13 Добавлено: 16.11.05 15:21
Ну вы даете. Написал же по-русски, неужто комментарии нужны?
AddObject некатит тут, мы ж типа незнаем какие и где объекты будут

Какие проблемы? Добавь в скриптовую машину их все. Кроме того, может быть про CreateObject слышал...
хотим чтобы программа сама разобралась и выполнила действие, т.е. скомпилировала наш текст в программу и выполнила его

А также чтобы сама написалась, откомпилировалась, задистрибутивилась и продалась, чтоб только бабосы посыпались. Ты прав - так не бывает :)
Но я предложил по крайней мере вариант для выполнения части кода. Иначе - чистый скрипт и никакого VB :)

Ответить

Номер ответа: 14
Автор ответа:
 Игорь



ICQ: 335510202 

Вопросов: 0
Ответов: 2
 Профиль | | #14 Добавлено: 16.11.05 15:54
Ну нет ничего не реального Есть рабочий проект, в котором используется рабочее ядро и соответственно наборы скриптов в зависимости от поставленной задачи. Соответственно, ограничения скрипта пришлось обходить. Вот часть кода модуля скрипта. Он имеет, свои как внутренние функции так и общие принятые:
'06.10.2005 15:11:16
'Модуль
'*********************************************
Option Explicit
'*********************************************
'---
    ;DIM RS
    ;DIM P1
    ;DIM P2
    ;DIM P3
    ;DIM P4
    ;DIM P5
    ;DIM vAdd
    ;DIM vKey
    Const nNum = "КСОГЛ00001"
    Const dType = 4
    Const idDoc = "dpgKred"
'---
Sub Begin()
With hDoc
If .vStatusWin(idDoc) = False Then
Call .vEventsDo()
Call .vLoad(0, idDoc)
Call .vAddCaption(200,500,5300,250,"СОГЛАШЕНИЕ №",64, 11)
Call .vAddCaption(4100,500,300,250,"ОТ",64, 11)
Call .vAddCaption(200,930,1300,250,"Заемщик:",64, 9, False)
Call .vAddCaption(200,1360,3300,250,"Основание:",64, 9, False)
Call .vAddCaption(6000,930,3300,250,"Счет:",64, 9, False)
Call .vAddCaption(200,1750,3300,250,"Класс-ция:",64, 9, False)
Call .vAddCaption(5500,1750,3300,250,"Сумма:",64, 9, False)
Call .vAddCaption(200,2200,3300,250,"Направление:",64, 9, False)
'---
.sAllowGridW = True
.sAllowGridH = True
.vPanelShow = True
'---
Call .vAddText(2750,480,1300,300,,,,0)
Call .vAddTextDate(4500,480,Date,1300,300,1)
If Len(.vObjP1) = 0 Then
P1 = 0
Else
P1 = .vObjP1
End If
Call .vAddTextSp(1350,880,4450,,"vw_RetKorr", 0,"vw_SCorr", "Заемщики", 2)
Call .vAddTextSp(6450,880,1950,,"vw_RetShet1", 0,"", "Счета заемщиков", 3)
Call .vAddTextSp(1350,1300,7050,,"vw_RetOsn", 0,"", "Справочник оснований", 4)
Call .vAddTextSp(1350,1720,2700,,"vw_RetKBK", 0,"vw_KBK1", "Бюджетная классификация", 5)
Call .vAddTextSp(1350,2150,7050,,"vw_VidKrRet", 0,"vw_VidKr", "Направления кредитования", 6)
Call .vAddText(6450,1720,1950,300,"0,00",True,2,7)
Call .vAddButton(100,100,1300,340,"Сохранить", 8, True)
Call .vAddButton(1500,100,1200,340,"Закрыть", 9, True)
Call .vAddText(3200,150,5300,300,,,,10, True)
Call .vStartRun()
Call .vResize(8760, 3500)
Call .vShow()
End If
End With
End Sub
'***********************************************************
Sub vAppendData()
'---
With hDocWin
'---
If Len(.vObjP1) = 0 Then
   P1 = 0
Else
   P1 = .vObjP1
End If
'---
    Call .vSShowFormSp(0, True)
    Call .vSShowFormSp(1, True)
    Call .vSShowFormSp(2, True)
'---
   .vReqForms = "jnrKred"
'---
   .vImportsFunction = "hValue"
   .vImportsFunction = "hCreateForm"
   .vImportsFunction = "hDataSource"
'---
   Call .vImportsFunctionMod("hRepGnrXML", "hRepXML";)
   Call .vImportsFunctionMod("hDataSource", "hDataXML";)
'---
Call .vVisibleButtonToolBar(";Dei" , True)
Call .vVisibleButtonToolBar("New" , False)
Call .vVisibleButtonToolBar("Edit" , False)
Call .vVisibleButtonToolBar(";Del" , False)
Call .vVisibleButtonToolBar("Save" , False)
Call .vVisibleButtonToolBar("SortA" , False)
Call .vVisibleButtonToolBar("SortZ" , False)
Call .vVisibleButtonToolBar("FOn" , False)
Call .vVisibleButtonToolBar("FOff" , False)
Call .vVisibleButtonToolBar("EditT" , False)
'---
Call .vAddMenuDoc("op_Close", "Анатомия кредитного документа", 0)
Call .vAddMenuDoc("sep1", "", 5)
Call .vAddMenuDoc("op_Plat", "Справка платежей по договору", 0)
'---
    Set RS = hDataSource
'---
If P1 > 0 Then
    Call RS.vAddParamsPRV("UN", 3, cStr(P1))
    Call RS.vResDataOpen("vw_DocEditPublic", True, 4)
    Call .vSetTextDate(0, rs.vValueDate(";Date";))
    Call .vSetTextBox(0, rs.vValueStr("NumDoc";))
    Call .vSetSpKey(0, rs.vValueLong("UN0";))
    Call .vSetSpKey(1, rs.vValueLong("UN2";))
    Call .vSetSpKey(2, rs.vValueLong("UN3";))
    Call .vSetSpKey(3, rs.vValueLong("UN4";))
    Call .vSetSpKey(4, rs.vValueLong("UN5";))
    Call .vSetTextBox(1, rs.vValueDouble("Summ1";))
    Call .vSetTextBox(2, rs.vValueStr("Prim1";))
   .Caption = "Договор клиента: " + "от " + cStr(rs.vValueDate(";Date";)) + " № " + _
               rs.vValueStr("NumDoc";)
Else
    Call RS.vAddParamsPRV("UN", 3, cStr(0))
    Call RS.vResDataOpen("vw_DocEditPublic", True, 4)
'---
DIM tm_N
DIM tt_N
'---
Set tm_N = hValue
tt_N = tm_N.vRetValues(dType, "vw_RetNum", 0)
Set tm_N = Nothing
'---
If tt_N = "0" Then
   tt_N = nNum
End If
'---
.Caption = "Новый документ " + tt_N
'---
    Call .vSetTextBox(0, tt_N)
'---
    vAdd = True
'---
End If
'---
End With
'---
End Sub
'**************************************************************************
Sub vDohVal()
'---
   ;DIM tm_N
   ;DIM tmp_vD
'---
   tmp_vD = Space(10)
'---
Set tm_N = hValue
   tmp_vD = tm_N.vRetValues(cLng(hDocWin.vGetSpKey(0)), "vw_RetValovDohod", 0)
   Call hDocWin.vSetCaption(3, "Валовый доход: " + hDocWin.vFormat(tmp_vD, "#,##0.00";))
Set tm_N = Nothing
End Sub
'**************************************************************************
Sub vToolBar(ByVal idName)
'---
    ;DIM vYesNo
'---
If idName = "op_Close" Then
'---
If hDocWin.vChangeStatus OR P1 = 0 Then
    Call hDocWin.vMessage("Сохраните изменения !", 64)
Else

   ;DIM tmp_f
'---
   Set tmp_f = Nothing
   Set tmp_f = hCreateForm
     tmp_f.vObjectFile = "dpgAnatomia.im"
     tmp_f.vObjP1 = RS.vGeneralKEY
     tmp_f.vObjP3 = hDocWin.vGetSpText(0) + ". Номер документа: " + hDocWin.vGetTextTBox(0) + " от " + cStr(hDocWin.vGetTextDate(0))
     Call tmp_f.vRunSrcDoc()
End If
'---
End If
'---
End Sub
'**********************************************
Sub vSave()
'---
    ;DIM vAddKey
    ;DIM vYesNo
'---
If P1 = 0 Then
'---
If hDocWin.vChangeStatus Then
    vYesNo = hDocWin.vMessageF("Сохранить изменения ?";)
If vYesNo = 1 Then
Call rs.vAddNew()
Call rs.vSetValueDate(";Date", hDocWin.vGetTextDate(0))
Call rs.vSetValueSTR("NumDoc", hDocWin.vGetTextTBox(0))
Call rs.vSetValueLong("UN0", hDocWin.vGetSpKey(0))
Call rs.vSetValueLong("UN2", hDocWin.vGetSpKey(1))
Call rs.vSetValueLong("UN3", hDocWin.vGetSpKey(2))
Call rs.vSetValueLong("UN4", hDocWin.vGetSpKey(3))
Call rs.vSetValueLong("UN5", hDocWin.vGetSpKey(4))
Call rs.vSetValueSTR("Summ1", hDocWin.vGetNumTBox(1))
Call rs.vSetValueSTR("Prim1", hDocWin.vGetTextTBox(2))
Call rs.vSetValueLong("NameType", dType)
Call rs.vUpdateTrue()
'---
    vAddKey = RS.vGeneralKEY
P1 = vAddKey
'---
hDocWin.vChangeStatus = False
vKey = 1
vAdd = True
'---
Else
'---
vKey = 0
vAdd = False
'---
End If
End If
'********************************************************
Else
'********************************************************
If hDocWin.vChangeStatus Then
    vYesNo = hDocWin.vMessageF("Сохранить изменения ?";)
If vYesNo = 1 Then
If hDocWin.vChangeStatus = True Then
Call rs.vSetValueDate(";Date", hDocWin.vGetTextDate(0))
Call rs.vSetValueSTR("NumDoc", hDocWin.vGetTextTBox(0))
Call rs.vSetValueLong("UN0", hDocWin.vGetSpKey(0))
Call rs.vSetValueLong("UN2", hDocWin.vGetSpKey(1))
Call rs.vSetValueLong("UN3", hDocWin.vGetSpKey(2))
Call rs.vSetValueLong("UN4", hDocWin.vGetSpKey(3))
Call rs.vSetValueLong("UN5", hDocWin.vGetSpKey(4))
Call rs.vSetValueSTR("Summ1", hDocWin.vGetNumTBox(1))
Call rs.vSetValueSTR("Prim1", hDocWin.vGetTextTBox(2))
Call rs.vSetValueLong("NameType", dType)
Call rs.vUpdateTrue()
End If
'---
vKey = 1
'---
hDocWin.vChangeStatus = False
'---
End If
End If
End If
End Sub
'**********************************************
Sub vClick1()
'---
    Call hDocWin.vCloseForm()
End Sub
'**********************************************
Sub vClick0()
'---
    Call vSave()
End Sub
'*************************************************
Sub vUnloadForm(ByVal vPar)
'---
    Call vSave()
'---
With hDocWin
    If vKey = 1 Then
      Call .vRequeryForms(cBool(vAdd))
    End If
End With
End Sub
'***********************************************************
Sub vSpClick(ByVal vInd)
'---
   ;DIM tmp_f
'---
   If vInd = 0 Then
   Set tmp_f = Nothing
   Set tmp_f = hCreateForm
     tmp_f.vObjectFile = "spClientsVibor.im"
     tmp_f.vObjP1 = hDocWin.vGetSpKey(0)
     tmp_f.vObjP2 = idDoc
     Call tmp_f.vRunSrcDoc()
   End If
'---
   If vInd = 2 Then
   Set tmp_f = Nothing
   Set tmp_f = hCreateForm
     tmp_f.vObjectFile = "spClientsVibor1.im"
     tmp_f.vObjP1 = hDocWin.vGetSpKey(2)
     tmp_f.vObjP2 = idDoc
     Call tmp_f.vRunSrcDoc()
   End If
'---
   If vInd = 1 Then
   If cDbl(hDocWin.vGetSpKey(0)) = 0 Then
   Call hDocWin.vMessage("Перед привязкой счета необходимо выбрать заемщика !";)
   Exit Sub
   End If
   Set tmp_f = Nothing
   Set tmp_f = hCreateForm
     tmp_f.vObjectFile = "spClientsVibor2.im"
     tmp_f.vObjP1 = hDocWin.vGetSpKey(1)
     tmp_f.vObjP2 = idDoc
     tmp_f.vObjP3 = hDocWin.vGetSpKey(0)

     Call tmp_f.vRunSrcDoc()
   End If
'---
   Set tmp_f = Nothing
End Sub
'****************************************************

Эти скрипты выполняются на лету. Оптимизацией ядра, занимались долго. Так, что все реально. С уважением Игорь

Ответить

Номер ответа: 15
Автор ответа:
 Victor



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #15
Добавлено: 16.11.05 16:49
Между прочим, есть пример.
ExecLine
http://vbnet.ru/samples/download.aspx?id=53

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам