"Run time error '13':Type mismatch - VB
Формулировка задачи:
"Run time error '13':Type mismatch
Исходный вариант моего кода такой.
AddLog " " & NumFiles + NumFiles1 & " Files found"
и
AddLog " " & FileToFind & " found in " & tempPath
и уже проявилась на двух PC, после первой записи оба лога обрываются. причем на моих 3-х и еще 2-х PC ничего такого не было, и выловить пока не могу.
Сейчас убрал tempDate = 0, м.б.неаккуратно написал, беру сначала дату-время первого файла, добавил вывод в лог после каждой строчки, жду логов, но уже бесит.
Грешил на то что м.б. нет msvbvm60.dll, но понял, что ее не может не быть-без нее не запускается вообще ничего.
Или с Listbox какая-нибудь фигня может получиться?
Вообще надо бы API какие-нибудь поискать для сравнения дат файлов, но сейчас хочу понять что не так именно тут.
Исходный вариант моего кода такой.
Ошибка возникает между строчками
AddLog " " & NumFiles + NumFiles1 & " Files found"
и
AddLog " " & FileToFind & " found in " & tempPath
и уже проявилась на двух PC, после первой записи оба лога обрываются. причем на моих 3-х и еще 2-х PC ничего такого не было, и выловить пока не могу.
Сейчас убрал tempDate = 0, м.б.неаккуратно написал, беру сначала дату-время первого файла, добавил вывод в лог после каждой строчки, жду логов, но уже бесит.
Грешил на то что м.б. нет msvbvm60.dll, но понял, что ее не может не быть-без нее не запускается вообще ничего.
Или с Listbox какая-нибудь фигня может получиться?
Вообще надо бы API какие-нибудь поискать для сравнения дат файлов, но сейчас хочу понять что не так именно тут.
Решение задачи: «"Run time error '13':Type mismatch»
textual
Листинг программы
FindFileInCab = <font color="teal">"FileName="</font> & FileInfo.FileName & <font color="teal">";Path="</font> & Archive & <font color="teal">";DateTime="</font> & FileInfo.<font color="blue">DateTime</font> & <font color="teal">";"</font>
...
<font color="blue">Dim</font> WFD <font color="blue">As</font> WIN32_FIND_DATA
Form1.List1.AddItem <font color="teal">"FileName="</font> & FileName & <font color="teal">";Path="</font> & Path & <font color="teal">";DateTime="</font> & fFileTimeToVBATime(WFD.ftLastWriteTime) & <font color="teal">";"</font>
<font color="blue">Public</font> FileInfo <font color="blue">As</font> FindFileInfo
<font color="blue">Public</font> <font color="blue">Type</font> FindFileInfo
FileName <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">DateTime</font> <font color="blue">As</font> <font color="blue">Date</font>
Size <font color="blue">As</font> Variant
Path <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">End</font> <font color="blue">Type</font>
<font color="blue">Public</font> <font color="blue">Type</font> WIN32_FIND_DATA
dwFileAttributes <font color="blue">As</font> <font color="blue">Long</font>
ftCreationTime <font color="blue">As</font> FILETIME
ftLastAccessTime <font color="blue">As</font> FILETIME
ftLastWriteTime <font color="blue">As</font> FILETIME
nFileSizeHigh <font color="blue">As</font> <font color="blue">Long</font>
nFileSizeLow <font color="blue">As</font> <font color="blue">Long</font>
dwReserved0 <font color="blue">As</font> <font color="blue">Long</font>
dwReserved1 <font color="blue">As</font> <font color="blue">Long</font>
cFileName <font color="blue">As</font> <font color="blue">String</font> * MAX_PATH
cAlternate <font color="blue">As</font> <font color="blue">String</font> * <font color="darkblue"><b>14</b></font>
<font color="blue">End</font> <font color="blue">Type</font>
<font color="blue">Public</font> <font color="blue">Type</font> FILETIME
dwLowDateTime <font color="blue">As</font> <font color="blue">Long</font>
dwHighDateTime <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">End</font> <font color="blue">Type</font>
<font color="blue">Public</font> <font color="blue">Type</font> SYSTEMTIME
wYear <font color="blue">As</font> <font color="blue">Integer</font>
wMonth <font color="blue">As</font> <font color="blue">Integer</font>
wDayOfWeek <font color="blue">As</font> <font color="blue">Integer</font>
wDay <font color="blue">As</font> <font color="blue">Integer</font>
wHour <font color="blue">As</font> <font color="blue">Integer</font>
wMinute <font color="blue">As</font> <font color="blue">Integer</font>
wSecond <font color="blue">As</font> <font color="blue">Integer</font>
wMilliseconds <font color="blue">As</font> <font color="blue">Integer</font>
<font color="blue">End</font> <font color="blue">Type</font>
<font color="blue">Public</font> <font color="blue">Function</font> fFileTimeToVBATime(ftFileTime <font color="blue">As</font> FILETIME, _
Optional fLocal <font color="blue">As</font> <font color="blue">Boolean</font> = True) <font color="blue">As</font> <font color="blue">Date</font>
<font color="blue">Dim</font> stSystem <font color="blue">As</font> SYSTEMTIME
<font color="blue">Dim</font> ftLocalFileTime <font color="blue">As</font> FILETIME
<font color="00AA00">'</font>
<font color="00AA00">' Converts Windows FILETIME date/time value to VBA.</font>
<font color="00AA00">'</font>
<font color="00AA00">' If the user wants local time, convert the file</font>
<font color="00AA00">' time to local file time.</font>
<font color="00AA00">'</font>
<font color="blue">If</font> fLocal <font color="blue">Then</font>
<font color="blue">Call</font> FileTimeToLocalFileTime(ftFileTime, ftLocalFileTime)
ftFileTime = ftLocalFileTime
<font color="blue">End</font> <font color="blue">If</font>
<font color="00AA00">'</font>
<font color="00AA00">' Convert the file time to system time then</font>
<font color="00AA00">' call our own function to convert to VBA time</font>
<font color="00AA00">'</font>
<font color="blue">If</font> CBool(FileTimeToSystemTime(ftFileTime, stSystem)) <font color="blue">Then</font>
fFileTimeToVBATime = fSysTimeToVBATime(stSystem)
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">End</font> <font color="blue">Function</font>
<font color="blue">Private</font> <font color="blue">Function</font> fSysTimeToVBATime(stSysTime <font color="blue">As</font> SYSTEMTIME) <font color="blue">As</font> <font color="blue">Date</font>
<font color="00AA00">'</font>
<font color="00AA00">' Converts Windows SYSTEMTIME to VBA date/time.</font>
<font color="00AA00">'</font>
<font color="00AA00">' Consrtuct a VBA date/time value using the</font>
<font color="00AA00">' DateSerial and TimeSerial functions.</font>
<font color="00AA00">'</font>
<font color="blue">With</font> stSysTime
fSysTimeToVBATime = DateSerial(.wYear, .wMonth, .wDay) + _
TimeSerial(.wHour, .wMinute, .wSecond)
<font color="blue">End</font> <font color="blue">With</font>
<font color="blue">End</font> <font color="blue">Function</font>