为什么这段代码编译后不能运行?

lnhsgj730828 2005-08-04 08:31:04
我的目的是执行用户在文本框中输入的VB代码。并将结果写入数据库中。
以下代码在VB环境中可正常运行,编译后运行出错。
出错信息是:应用程序出现错误,正在生成日志。
日志内容(原文):
“应用程序 产生了一个应用程序错误 此错误发生在 08/03/2005 @ 12:00:24.648 所产生的意外情况为 c0000005,在地址 0FA916F9 (EbMode)处”

我用的是 Win2k adv s +sp4+vb6+sp6

1、请问该如何改进?
2、有没有其他解决方法?

Private Declare Function EbExecuteLine Lib "vba6.dll" ( _
ByVal pStringToExec As Long, _
ByVal Unknownn1 As Long, _
ByVal Unknownn2 As Long, _
ByVal fCheckOnly As Long) As Long

Function RunCode(ByVal cmd As String) As Long
Dim TCmd() As String
Dim Ti As Long
Dim Tl As Long

TCmd = Split(cmd, Chr(13) + Chr(10))
For Ti = 0 To UBound(TCmd())
Tl = EbExecuteLine(StrPtr(ByVal TCmd(Ti)), 0, 0, 0)
Text1(1).Text = Text1(1).Text & CStr(Tl) + ":" + TCmd(Ti) & Chr(13) & Chr(10)
Next
End Function

Private Sub Command1_Click()
RunCode Text1(0).Text
End Sub

Private Sub Form_Load()
Dim Tstr As String
Tstr = Tstr & "'请在此输入VB代码 " & Chr(13) & Chr(10)
Tstr = Tstr & "dim a as long,b as long,c as long" & Chr(13) & Chr(10)
Tstr = Tstr & "a=" & 3 & Chr(13) & Chr(10)
Tstr = Tstr & "b=" & 5 & Chr(13) & Chr(10)
Tstr = Tstr & "c=" & 2 & Chr(13) & Chr(10)
Tstr = Tstr & "clipboard.settext (a+b)/c" & Chr(13) & Chr(10)
Tstr = Tstr & "msgbox Clipboard.GetText"
Text1(0).Text = Tstr
Text1(1).Text = ""
End Sub

...全文
115 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lnhsgj730828 2005-08-10
  • 打赏
  • 举报
回复
引用脚本控件我也试过,但我不知道在控件中该如何引用数据库中的字段进行计算,并将计算结果写回数据库?请各位朋友写出关键代码。谢谢!
londywolf 2005-08-06
  • 打赏
  • 举报
回复
这种所谓的变通其实就是调用脚本语言吧?
zhujiechang 2005-08-05
  • 打赏
  • 举报
回复
上边的链接虽说是不能在编译环境下运行,但也提供了一种变通的方法。
Dim tempStr As String
Dim wscript As ScriptControl

Set wscript = New ScriptControl
wscript.Language = "vbscript"

tempStr = "Msgbox " & Chr(34) & "TEST" & Chr(34)

wscript.ExecuteStatement tempStr
londywolf 2005-08-04
  • 打赏
  • 举报
回复
http://www.tek-tips.com/viewthread.cfm?qid=97332
不幸的消息
只能用在ide环境下

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧