VB+VFP联合应用
各类语言都有其长处和缺憾,如何取长补短呢?希望这篇文章能起到抛砖引玉的效果。
目标:必须在VFP环境对CSV格式文件中所有的字符“/”替换成“-”
分析:如果在VFP中读入CSV格式文件然后再找字符“/”再替换成“-”,势必比较困难,速度也会很慢。因为不知道字符“/”将出现在那个字段。也不清楚字符“/”出现的位置。而这类问题的处理如果用VB就很简单。可以在VB中正行读入,然后使用Replace命令就可以了,然后循环读取下一行,直到文件末尾。可以使用OLE组件技术在VFP中调用VB实现的相关功能。具体方法如下:
首先用VB生成一个Dll,名为Lib,模块名为Tools。在Tools模块中写入下列代码。
例如:
Public Function ReplaceA(ByVal Source As String)
If Source = "" Then
Exit Function
End If
On Error GoTo Open_Err
Dim Destination As String
Destination = "c:/tmp.t"
FileCopy Source, Destination
Kill Source
On Error GoTo Replace_Err
Dim textLine
Open Destination For Input As #1
Open Source For Output As #2
Do While Not EOF(1)
Line Input #1, textLine
各类语言都有其长处和缺憾,如何取长补短呢?希望这篇文章能起到抛砖引玉的效果。
目标:必须在VFP环境对CSV格式文件中所有的字符“/”替换成“-”
分析:如果在VFP中读入CSV格式文件然后再找字符“/”再替换成“-”,势必比较困难,速度也会很慢。因为不知道字符“/”将出现在那个字段。也不清楚字符“/”出现的位置。而这类问题的处理如果用VB就很简单。可以在VB中正行读入,然后使用Replace命令就可以了,然后循环读取下一行,直到文件末尾。可以使用OLE组件技术在VFP中调用VB实现的相关功能。具体方法如下:
首先用VB生成一个Dll,名为Lib,模块名为Tools。在Tools模块中写入下列代码。
例如:
Public Function ReplaceA(ByVal Source As String)
If Source = "" Then
Exit Function
End If
On Error GoTo Open_Err
Dim Destination As String
Destination = "c:/tmp.t"
FileCopy Source, Destination
Kill Source
On Error GoTo Replace_Err
Dim textLine
Open Destination For Input As #1
Open Source For Output As #2
Do While Not EOF(1)
Line Input #1, textLine