1

Тема: JS: класс Win32_PhysicalMemory как определить объём RAM со всех банков

не могу правильно опред. полный объём ram. вместо суммирования почему-то идёт конкатенация.
перем. ram изначально задал как число, св-во Capacity имеет тип uint64. в чём может быть проблема?

var wbemFlagReturnImmediately = 0x10; 
var wbemFlagForwardOnly = 0x20;
var SWbemService = GetObject("winmgmts://./root/cimv2");
var colItems = SWbemService.ExecQuery("SELECT * FROM Win32_PhysicalMemory", "WQL",		
                                          wbemFlagReturnImmediately | wbemFlagForwardOnly); 
var enumItems = new Enumerator(colItems), ram = 0; 
for (; !enumItems.atEnd(); enumItems.moveNext())
	{ 
	ram = ram + enumItems.item().Capacity;				// не суммирует, а "склеивает"
	}
WScript.Echo(ram);

2 (изменено: im2002, 2017-11-20 11:56:15)

Re: JS: класс Win32_PhysicalMemory как определить объём RAM со всех банков

нашёл решение... вроде:

var wbemFlagReturnImmediately = 0x10; 
var wbemFlagForwardOnly = 0x20;
var SWbemService = GetObject("winmgmts://./root/cimv2");
var colItems = SWbemService.ExecQuery("SELECT * FROM Win32_PhysicalMemory", "WQL",		
                                          wbemFlagReturnImmediately | wbemFlagForwardOnly); 
var enumItems = new Enumerator(colItems), ram = 0; 
for (; !enumItems.atEnd(); enumItems.moveNext())
	{
	ram = ram + parseInt(enumItems.item().Capacity);				
	}
WScript.Echo(ram.toString().replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, "$1 "));

3

Re: JS: класс Win32_PhysicalMemory как определить объём RAM со всех банков

Обратно в строку преобразовать. Через String(ram), например.

4

Re: JS: класс Win32_PhysicalMemory как определить объём RAM со всех банков

Альтернатива:


var wbemFlagReturnImmediately = 0x10,
	wbemFlagForwardOnly = 0x20,
	value = 0;
	
with(new Enumerator(GetObject("winmgmts://./root/cimv2").ExecQuery(
	"SELECT Capacity FROM Win32_PhysicalMemory", 
	"WQL",
	wbemFlagReturnImmediately | wbemFlagForwardOnly)
)){
	for (; !atEnd();moveNext())
	{ 
		value += parseInt(item().Capacity);
	}
	WScript.Echo(value / 1048576 + " MB")
}
Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !