使用VB6
代码。
Dim posn As Integer, i As Integer
Dim fName As String
posn = 0
For i = 1 To Len(flname)
If (Mid(flname, i, 1) = "\") Then posn = i
Next i
fName = Right(flname, Len(flname) - posn)
posn = InStr(fName, ".")
If posn <> 0 Then
fName = Left(fName, posn - 1)
End If
GetFileName = fName
FileName: Clockings8.mis06042009 120442.fin
但它显示的文件名为“Clockings8”。它应该显示“Clockings8.mis06042009 120442”
如何修改代码?
需要vb6代码帮助
答案 0 :(得分:3)
使用Scripting.FileSystemObject
组件有点清晰。尝试:
Dim fso as New Scripting.FileSystemObject
GetFileName = fso.GetBaseName(fname)
你的代码停顿的原因是InStr从字符串的开头到结尾,并在找到匹配的任何地方停止。文件名“Clockings8.mis06042009 120442.fin”包含两个句点。因此,您应该使用InStrRev来从字符串的末尾开始搜索。
答案 1 :(得分:2)
像大卫建议的那样使用FileSystemObject的GetBaseName是一个好主意。如果你不能或不想(并且有理由你可能不想)使用FileSystemObject,那么有一个简单的解决方案:从名称中最后一个点开始的文件名字符串中删除所有字符。
这就是我的意思:
Dim fn As String
fn = "Clockings8.mis06042009 120442.fin"
Dim idx As Integer
idx = InStrRev(fn, ".")
GetFileName = Mid(fn, 1, idx - 1)
如果您的文件名没有扩展名但在文件名字符串中有一个点,则此方法将返回错误结果。