Vb6 如何仅获取文件名?
使用VB6 代码Vb6 如何仅获取文件名?,vb6,Vb6,使用VB6 代码 Dim posn为整数,i为整数 作为字符串的Dim fName posn=0 对于i=1到Len(flname) 如果(Mid(flname,i,1)=“\”),那么posn=i 接下来我 fName=Right(flname,Len(flname)-posn) posn=仪表(fName,“.”) 如果posn0那么 fName=左(fName,位置-1) 如果结束 GetFileName=fName 文件名:Clockings8.mis06042009 120442.fi
Dim posn为整数,i为整数
作为字符串的Dim fName
posn=0
对于i=1到Len(flname)
如果(Mid(flname,i,1)=“\”),那么posn=i
接下来我
fName=Right(flname,Len(flname)-posn)
posn=仪表(fName,“.”)
如果posn0那么
fName=左(fName,位置-1)
如果结束
GetFileName=fName
文件名:Clockings8.mis06042009 120442.fin
但它显示的文件名是“Clockings8”。它应该显示“Clockings8.mis06042009 120442”
如何修改代码
需要vb6代码帮助使用
脚本.FileSystemObject
组件会更简洁一些。尝试:
Dim fso as New Scripting.FileSystemObject
GetFileName = fso.GetBaseName(fname)
代码短停的原因是InStr从字符串的开头一直工作到结尾,并在找到匹配项时停止。文件名“Clockings8.mis06042009 120442.fin”包含两个句点。因此,您应该使用instrev从字符串的末尾开始搜索。使用
脚本.FileSystemObject
组件会更简洁一些。尝试:
Dim fso as New Scripting.FileSystemObject
GetFileName = fso.GetBaseName(fname)
代码短停的原因是InStr从字符串的开头一直工作到结尾,并在找到匹配项时停止。文件名“Clockings8.mis06042009 120442.fin”包含两个句点。因此,您应该使用instrev从字符串末尾开始搜索。按照David的建议使用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)
如果您的文件名没有扩展名,但文件名字符串中有一个点,则此方法将返回错误结果。按照David的建议使用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)
如果您的文件名没有扩展名,但在文件名字符串的某个位置有一个点,则此方法将返回错误结果。还有一个扩展名,其中包括扩展名(为了避免像我这样的人搜索,他们需要一个与VB6相当的Path.filename
),还有一个扩展名,其中包括扩展名(为了避免像我这样的人搜索,我需要一个相当于Path.FileName
)的VB6)