中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助,如何将vbs程序转换成VB语言程序
作者:
标题: 求助,如何将vbs程序转换成VB语言程序 上一主题 | 下一主题
beyond125
初级用户





积分 92
发帖 35
注册 2008-3-25
状态 离线
『楼 主』:  求助,如何将vbs程序转换成VB语言程序

dim fso, f1, f2, regex, arr
dim str, num1, num2, num3, fn1, fn2
fn1=inputbox("请输入提取文件名","信息","1.loc")
fn2=inputbox("请输入生成文件名","信息","1.csv")
set regex=new regexp
regex.pattern="^"&inputbox("请输入包含字符的行","信息","ELCD")
regex.ignorecase=true

set fso=createobject("scripting.filesystemobject")
set f2=fso.createtextfile(fn2,true)
f2.writeline "Log"&","&"Distance"&","&"4Hz"&","&"4Hz"&","&"Depth"
f2.writeline "#"&","&"(m)"&","&"(mA)"&","&"(dBmA)"&","&"(cm)"
set f1=fso.opentextfile(fn1,1)
do while f1.atendofstream<>true
  str=f1.readline
  if regex.test(str) then
     arr=split(str,",")
     if arr(4)>0 then
       num1=arr(4)*1000
       num2=log(num1)/log(10)*20
       num3=arr(2)*100
       f2.writeline arr(1)&","&","&num1&","&round(num2,2)&","&num3&","
     end if
  end if
loop
f2.close
f1.close
msgbox "OK"
set f1=nothing
set f2=nothing
set regex=nothing
set fso=nothing
上面是VBS脚本程序,下面是我改的VB程序,调试时,老出错,请大家指点帮忙。谢谢

2008-7-2 16:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
beyond125
初级用户





积分 92
发帖 35
注册 2008-3-25
状态 离线
『第 2 楼』:  

Dim fso, f1, f2, f3, f4, regex, arr
Dim str, num1, num2, num3, fn1, fn2, fn3, fn4, fn5, fn6

Private Sub Command1_Click()
CommonDialog1.Filter = "LOC文件(*.loc)|*.loc|所有文件(*.*)|*.*"
CommonDialog1.ShowOpen
fn1 = CommonDialog1.FileName
Text1.Text = fn1
''读取数据源文件用fn1文件
End Sub

Private Sub Command2_Click()
CommonDialog1.Filter = "CSV文件(*.csv)|*.csv|文本文件(*.txt)|txt|所有文件(*.*)|*.*"
CommonDialog1.ShowSave
fn6 = CommonDialog1.FileName
Text2.Text = fn6
''输出数据文件fn6文件
End Sub

Private Sub Command3_Click()
Set fso = CreateObject("scripting.filesystemobject")
Set f6 = fso.createtextfile(fn2, True)
f6.writeline "Log,Distance,4Hz,4Hz,,Depth"
f6.writeline "#,(m),(mA), (dBmA),,(cm)"
Set f1 = fso.opentextfile(fn1, 1)
Do While f1.atendofstream <> True
  str = f1.readline
  If regex.Test(str) Then
     arr = Split(str, ",")
     If arr(4) > 0 Then
       num1 = arr(4) * 1000
       num2 = Log(num1) / Log(10) * 20
       num3 = arr(2) * 100
       f6.writeline arr(1)&","&","&num1&","&round(num2,2)&","&num3&","
     End If
  End If
Loop
f6.Close
f1.Close
MsgBox "数据转换OK"
Set f1 = Nothing
Set f6 = Nothing
Set regex = Nothing
Set fso = Nothing
End Sub

Private Sub exitfile_Click()
Unload Me
End
End Sub

Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Set regex = New RegExp
End Sub

Private Sub openfile_Click()
CommonDialog1.Filter = "LOC文件(*.loc)|*.loc|所有文件(*.*)|*.*"
CommonDialog1.ShowOpen
fn1 = CommonDialog1.FileName
Text1.Text = fn1
''读取数据源文件用fn1文件
End Sub

Private Sub Option1_Click()
regex.Pattern = "^ELF"
regex.IgnoreCase = True
End Sub

Private Sub Text1_Change()
Text1.Text = fn1
End Sub
这是我写的VB程序,请大家帮忙看看哪里不对!!!

2008-7-2 16:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 3 楼』:  

楼主有没有先引用Microsoft VBScript Regular Expressions?

如果没有的话。正则表达式是不能用set reg=new regexp这样创建的。

可以这样,set reg =createobject("vbscript.regexp")

2008-7-2 17:39
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
beyond125
初级用户





积分 92
发帖 35
注册 2008-3-25
状态 离线
『第 4 楼』:  

谢谢你的帮助,我引用了Microsoft VBScript Regular Expressions 5.5,并且按你所说的改了,但还是不行。!!!

2008-7-8 16:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
AlexZhang
系统支持





积分 952
发帖 410
注册 2007-2-8
状态 离线
『第 5 楼』:  

首先,创建模块
然后,SubMain自己处理
引用正则表达式库
没其他太多需要注意的。

2008-7-8 18:37
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: