Форум: "Прочее";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];
ВнизЧто неправильно в следующем VBScript? Найти похожие ветки
← →
SkySpeed (2006-11-11 20:42) [0]Что неправильно в следующем VBScript?
set objFSO = CreateObject("Scripting.FileSystemObject")
set objTextFile = objFSO.CreateTextFile("os1.txt")
set objWMIService = GetObject("winmgmts:" & "{impersonationLevel = impersonate}!\root\cimv2")
set colOS = objWMIService.ExecQuery("Select * from Win32_Process")
for each objProcess in colOS
objTextFile.WriteLine objProcess.ExecutablePath
objTextFile.WriteLine vbCrLf
next
Что самое прикольное - ошибка выскакивает наWriteLine
Microsoft VBScript runtime error: Type mismatch: "objTextFile.WriteLine"
← →
sniknik © (2006-11-11 20:51) [1]> Type mismatch: "objTextFile.WriteLine"
Null не так, преобразовывать или проверять надо.
← →
SkySpeed (2006-11-11 20:54) [2]
> sniknik © (11.11.06 20:51) [1]
> > Type mismatch: "objTextFile.WriteLine"
> Null не так, преобразовывать или проверять надо.
Если не трудно - подскажи как это сделать, плиз!
← →
sniknik © (2006-11-11 21:01) [3]вообщето здесь родной язык дельфи... и у меня весь опыт с вижуал бейсиком в чтении хелпов из аксесса... понять могу, а вот написать... ;)
чтото типа if not isNull() then ... (т.е. как в дельфе ;о)), но может отличаться)
ошибка просто встречается, при работе с jet а он функции (не синтаксис!) vb поддерживает.
← →
sniknik © (2006-11-11 21:08) [4]в смысле, ошибка то конечно несовпадение типа... но неявно (на что нарываешься, и до чего вот так сразу не догадаешся) там функции вроде бы строку возвращают, описано/должны, а на самом деле "вариант", у которого нормально значение null... а вот входные параметры почемуто его не принимают... бейсик, одно слово... ;о)
← →
palva © (2006-11-11 21:09) [5]VBS не знает, что такое vbCrLf . Наверно, вы имели ввиду конец строки, тогда присвойте этой переменной значение Chr(13) & Chr(10)
Только это можно сделать проще. Для перевода строки достаточно выполнить WriteLine без параметров.
← →
palva © (2006-11-11 21:11) [6]А несовпадение типов означает, что вы передали методу WriteLine параметр нестрокового типа.
← →
sniknik © (2006-11-11 21:13) [7]> VBS не знает, что такое vbCrLf
знает, не раз встречалось.
help (попавшийся)
Sub ShowFileAccessInfo(filespec)
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(filespec)
s = UCase(filespec) & vbCrLf
s = s & "Created: " & f.DateCreated & vbCrLf
s = s & "Last Accessed: " & f.DateLastAccessed & vbCrLf
s = s & "Last Modified: " & f.DateLastModified
MsgBox s, 0, "File Access Info"
End Sub
проблема вот в этом значении objProcess.ExecutablePath, том что оно не всегда строка.
← →
sniknik © (2006-11-11 21:15) [8]> А несовпадение типов означает, что вы передали методу WriteLine параметр нестрокового типа.
а я про что говорил в первых двух постах???
← →
palva © (2006-11-11 21:27) [9]А, теперь понял. Я прочитал
> ошибка выскакивает на WriteLine
а в примере два WriteLine. Я подумал на последний.
Тогда надо проверить тип. Для этого можно присвоить
s =objProcess.ExecutablePath
If TypeName(s) = "String" Then
...
Может быть, сработает и
If TypeName(objProcess.ExecutablePath) ...
но не советую так делать.
Вот попробовал следующее:i = 5
s = ""
MsgBox TypeName(i) " Integer
MsgBox TypeName(s) " String
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c