在使用VB6的文件夹中查找文件的最新日期时遇到问题

在使用VB6的文件夹中查找文件的最新日期时遇到问题,vb6,Vb6,我需要找到给定目录中最新日期的文件。我还不是VB6的初学者,这正是我需要用于一些旧代码的地方。在杀掉谷歌一整天之后,下面是我到目前为止所拥有的。但是它找不到正确的文件。有人能帮忙吗? 谢谢 Dim sFile1作为字符串 将sFile2设置为字符串 Dim Dfile1日期作为日期 Dim dFile2Date作为日期 sFile1=Dir(“c:\test\*.*”,vbNormal) 做 sFile2=Dir 如果是sFile1“”,则dFile1Date=FileDateTime(“c:\

我需要找到给定目录中最新日期的文件。我还不是VB6的初学者,这正是我需要用于一些旧代码的地方。在杀掉谷歌一整天之后,下面是我到目前为止所拥有的。但是它找不到正确的文件。有人能帮忙吗? 谢谢

Dim sFile1作为字符串
将sFile2设置为字符串
Dim Dfile1日期作为日期
Dim dFile2Date作为日期
sFile1=Dir(“c:\test\*.*”,vbNormal)
做
sFile2=Dir
如果是sFile1“”,则dFile1Date=FileDateTime(“c:\test\”&sFile1)
如果是sFile2“”,则dFile2Date=FileDateTime(“c:\test\”&sFile2)
如果dFile1Date>dFile2Date,则sFile2=sFile1
循环直到sFile2=“”
FormVersionDate=sFile1
调用MsgBox(FormVersionDate、VBEQUOTION、App.Title)

如果您仔细查看代码,您会发现无论逻辑结果如何,
sFile1
都不会被重新分配,因此在最后调用它的值会使所有do循环变得无关。另外,它看起来像是
FormVersionDate
可能应该是一个日期,但是您要为它分配一个字符串

我使用嵌套循环重新编写了代码,以避免与过度注释无关的逻辑:

Dim sFile1  As String
Dim sFile2 As String
Dim dFile1Date As Date
Dim dFile2Date As Date

'Get first File
sFile1 = Dir("c:\test\*.*", vbNormal)
'Make sure file exists
If sFile1 <> "" Then
    'Since file exists retrieve DateTime for file
    dFile1Date = FileDateTime("c:\test\" & sFile1)
    'begin loop for other files
    Do
        'Retrieve new file
        sFile2 = Dir
        'Make sure file exists
        If sFile2 <> "" Then
            'Retrieve DateTime for file
            dFile2Date = FileDateTime("c:\test\" & sFile2)
            'If old DateTime is older than new DateTime
            If dFile1Date < dFile2Date Then
                'Overwrite first file variables with newer file info
                sFile1 = sFile2
                dFile1Date = dFile2Date
            End If
        End If
        'Loop until new file doesn't exist
    Loop Until sFile2 = ""
End If
'If you actually want the date, you should use dFile1Date instead of sFile1.
FormVersionDate = sFile1
Call MsgBox(FormVersionDate, vbExclamation, App.Title)
Dim sFile1作为字符串
将sFile2设置为字符串
Dim Dfile1日期作为日期
Dim dFile2Date作为日期
'获取第一个文件
sFile1=Dir(“c:\test\*.*”,vbNormal)
'确保文件存在
如果是sFile1“”,则
'由于文件存在,检索文件的日期时间
dFile1Date=FileDateTime(“c:\test\”&sFile1)
'开始其他文件的循环
做
'检索新文件
sFile2=Dir
'确保文件存在
如果是sFile2“”,则
'检索文件的日期时间
dFile2Date=FileDateTime(“c:\test\”和sFile2)
'如果旧日期时间早于新日期时间
如果dFile1Date
如果您仔细查看代码,您会发现无论逻辑结果如何,
sFile1
都不会被重新分配,因此在最后调用它的值会使所有do循环变得无关。另外,它看起来像是
FormVersionDate
可能应该是一个日期,但是您要为它分配一个字符串

我使用嵌套循环重新编写了代码,以避免与过度注释无关的逻辑:

Dim sFile1  As String
Dim sFile2 As String
Dim dFile1Date As Date
Dim dFile2Date As Date

'Get first File
sFile1 = Dir("c:\test\*.*", vbNormal)
'Make sure file exists
If sFile1 <> "" Then
    'Since file exists retrieve DateTime for file
    dFile1Date = FileDateTime("c:\test\" & sFile1)
    'begin loop for other files
    Do
        'Retrieve new file
        sFile2 = Dir
        'Make sure file exists
        If sFile2 <> "" Then
            'Retrieve DateTime for file
            dFile2Date = FileDateTime("c:\test\" & sFile2)
            'If old DateTime is older than new DateTime
            If dFile1Date < dFile2Date Then
                'Overwrite first file variables with newer file info
                sFile1 = sFile2
                dFile1Date = dFile2Date
            End If
        End If
        'Loop until new file doesn't exist
    Loop Until sFile2 = ""
End If
'If you actually want the date, you should use dFile1Date instead of sFile1.
FormVersionDate = sFile1
Call MsgBox(FormVersionDate, vbExclamation, App.Title)
Dim sFile1作为字符串
将sFile2设置为字符串
Dim Dfile1日期作为日期
Dim dFile2Date作为日期
'获取第一个文件
sFile1=Dir(“c:\test\*.*”,vbNormal)
'确保文件存在
如果是sFile1“”,则
'由于文件存在,检索文件的日期时间
dFile1Date=FileDateTime(“c:\test\”&sFile1)
'开始其他文件的循环
做
'检索新文件
sFile2=Dir
'确保文件存在
如果是sFile2“”,则
'检索文件的日期时间
dFile2Date=FileDateTime(“c:\test\”和sFile2)
'如果旧日期时间早于新日期时间
如果dFile1Date
尝试通过变量名进行通信有很多话要说。通常,结果比添加大量补偿注释要清楚得多,尤其是在一个简短的过程中

Dim Directory As String
Dim CurrFile As String
Dim CurrDate As Date
Dim NewestDate As Date
Dim NewestFile As String

Directory = "c:\test\"
CurrFile = Dir$(Directory & "*.*", vbNormal)
Do While Len(CurrFile) > 0
    CurrDate = FileDateTime(Directory & CurrFile)
    If CurrDate > NewestDate Then
        NewestDate = CurrDate
        NewestFile = CurrFile
    End If
    CurrFile = Dir$()
Loop
MsgBox CStr(NewestDate) & vbNewLine & NewestFile

请注意,这不会检测并警告其中没有可见文件的目录。您可以只查找一个空(“”
newest文件

尝试通过变量名进行通信有很多话要说。通常,结果比添加大量补偿注释要清楚得多,尤其是在一个简短的过程中

Dim Directory As String
Dim CurrFile As String
Dim CurrDate As Date
Dim NewestDate As Date
Dim NewestFile As String

Directory = "c:\test\"
CurrFile = Dir$(Directory & "*.*", vbNormal)
Do While Len(CurrFile) > 0
    CurrDate = FileDateTime(Directory & CurrFile)
    If CurrDate > NewestDate Then
        NewestDate = CurrDate
        NewestFile = CurrFile
    End If
    CurrFile = Dir$()
Loop
MsgBox CStr(NewestDate) & vbNewLine & NewestFile

请注意,这不会检测并警告其中没有可见文件的目录。您可以只查找一个空(“”
newest文件

谢谢。我也很感谢你的详细解释。谢谢。我也很感谢你的详细解释。