Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.03;
Скачать: CL | DM;

Вниз

Что неправильно в следующем 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.059 c
2-1163865992
AlexanderMS
2006-11-18 19:06
2006.12.03
Вывод многострочного текста.


1-1161332146
zorik
2006-10-20 12:15
2006.12.03
Что за файл GqeDelph?


1-1161613126
click
2006-10-23 18:18
2006.12.03
popup menu при перетаскивании за клиент. область


2-1163759518
Ангела
2006-11-17 13:31
2006.12.03
Вопрос по FillChar


15-1163246281
SPad
2006-11-11 14:58
2006.12.03
Раскладка клавиатуры.