У меня есть функция, которая читает текстовый файл, содержащий две строки, она читает вторую строку и пытается преобразовать строку в длинное целое число. Моя проблема в том, что она не преобразует строку, код функции выглядит следующим образом:
Function getLastUsed (txtFilePath)
'Read timestamp created by full backup script
Const ForReading = 1
'Error Handling
On Error Resume Next
Err.Clear
Set objFile = Fso.OpenTextFile(txtFilePath, ForReading)
'Read if file was successfully opened, else return 0
If Err.Number = 0 Then
'Value will be on the second line, so readLine twice
Dim valString
valString = objFile.Readline
valString = objFile.Readline
objFile.Close
'If not empty continue, else return 0
If Not IsEmpty(valString) Then
'Return value is IsNumeric, else return 0
If IsNumeric(valString) Then
Dim valInt
valInt = CLng(valString)'<--Won't convert, variable valInt is empty after this line
getLastUsed = valInt
Else
getLastUsed = 0
End If
Else
getLastUsed = 0
End If
Else
getLastUsed = 0
End If
End Function
Я использую Visual Studio для перехода и отладки, глядя на переменную 'valInt', она пуста после того, как я вызываю CLng или CInt. Однако, если я жестко закодирую значение, например valInt = CLng("18")
, оно работает нормально. Я не уверен, что мне не хватает, любая помощь приветствуется.
UPDATE
Хорошо, поэтому я попытался запустить скрипт снова, на этот раз заменив значение в текстовом файле, которое было 20110511123500
, на что-то более короткое 2011
, и это сработало. Похоже, это была проблема точности. Это приводит ко второму вопросу: какое наибольшее число VBScript может обрабатывать в отношении преобразования? Указанное числовое значение представляет собой объем дискового пространства на жестком диске, поэтому мне нужно иметь возможность читать большие числа. Спасибо за подсказку Пепто.
ОБНОВЛЕНИЕ 2
Использование двойного сделал трюк, спасибо G Mastros .