помогите с MSscriptControl

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

помогите с MSscriptControl

Сообщение vrodo » 24.10.2003 (Пт) 12:07

Доброе время суток
неполучается добавить Code в ScriptControl
Код: Выделить всё
MyStr = "Function Ftl(num As Double) As String " & vbCrLf & _
        "Dim I As Double  " & vbCrLf & _
        "Ftl = """"  " & vbCrLf & _
        "Select Case num  " & vbCrLf & _
        "Case Is > 0  " & vbCrLf & _
        "For I = 1 To num  " & vbCrLf & _
        "If Len(fln) > 0 Then fln = fln + "" * ""  " & vbCrLf & _
        "Ftl = Ftl + I " & vbCrLf & _
        "Next I " & vbCrLf & _
        "Case Else " & vbCrLf & _
        "Ftl = str(0) " & vbCrLf & _
        "End Select " & vbCrLf & _
        "End Function"
Debug.Print MyStr
ScriptControl1.AddCode MyStr


debuger печатает

Function Ftl(num As Double) As String
Dim I As Double
Ftl = ""
Select Case num
Case Is > 0
For I = 1 To num
If Len(fln) > 0 Then fln = fln + " * "
Ftl = Ftl + I
Next I
Case Else
Ftl = str(0)
End Select
End Function


но при добавлении вадает ошибку
run-time error '1006'

expected ')'

Но ГДЕ!
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.10.2003 (Пт) 12:26

Насколько я помню, в VBS функции описываются без возвращаемого типа значения. То есть просто Function MyFunc (param).

Также вызывает сомнения вот эта часть кода Case Is > 0

vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Сообщение vrodo » 24.10.2003 (Пт) 12:29

Сама функция рабочая, проверил.
а по поводу не возвращаемых значений

Код: Выделить всё
m.AddCode ("function MyFunc (v as double ) as double " & vbCrLf & " myfunc = v*2" & vbCrLf & " end function")

нашел в этом же форуме RedShade писал кажется
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.10.2003 (Пт) 13:11

Ну уж мог бы и не коверкать никнейм-то :)

А с кодом что то вооще мистическое :) У меня тот же еррор вылазит. А если вставляю в тело модуля формы код, то все окей :)

vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Сообщение vrodo » 24.10.2003 (Пт) 13:36

Извини не хотел обидеть :oops:

Так что делать то ?
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.10.2003 (Пт) 13:40

Да я не обиделся :)

А фиг знает если честно что делать.

Наверное кого третьего позвать :) Потому что у меня устойчивое впечатление того, что мы просто не видим какую то ошибку, знаешь как бывает когда очки на лбу ищут :)

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 24.10.2003 (Пт) 16:02

VBScript немного ограниченней VB, поэтому нужно писать проще. Проверяется записью в файл *.vbs и его запуском.

1. VBScript нетипизирован, поэтому там все переменные Variant-ы, а потому либо не объявляются, либо Dim x

Код: Выделить всё
function MyFunc (v)
   Dim a
   a = 2
   myfunc = v*a
end function


2. И т.п.

Вот работающий в vbs код, если не наврал в семантике.
Код: Выделить всё
Function Ftl(num)
   Dim I
   Ftl = ""
   if num > 0 then
      For I = 1 To num
         If Len(Ftl) > 0 Then Ftl = Ftl & " * "
         Ftl = Ftl & I
      Next
   Else
      Ftl = cstr(0)
   End If
End Function
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

vrodo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 109
Зарегистрирован: 09.10.2003 (Чт) 18:45
Откуда: Дубна МО, Москва

Сообщение vrodo » 27.10.2003 (Пн) 13:04

Спасибо большое вроде помогло

да не очень
я ведь по наивности своей думал что таким образом добавлю новую функцию наравне с COS, Sin, Exp и так далее
Может продолжим тему ? А.....
Чтобы понять свои ошибки их достаточно написать (c)
Интернет большой, ему видней
С наилучшими Пожеланиями и Всех Благ :D


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

    TopList  
cron