AJUDA COM ARRAY

ALEVALE 31/01/2013 15:43:45
#418500
Fala pessoal tudo bem ?

Na realidade eu vou converter o meu código para VBSCRIPT mas estou me perdendo na lógico.
Seguinte eu vou listar todas as impressoras existem no meu servidor de impressão, depois de listar vou criar uma lista o problema é que eu não consigo pensar como faria para criar essa lista exemplo:
Ao listar as impressoras pensei em ordena-las com um número (numero referente ao array) e dai quando o usuário digitar o numero eu busco no Array a impressora referente.
Assim:

Menu
1 - Impressora 1
2 - Impressora 2

Ao digitar o 1 eu sei que é referente a impressora 1 pois ela está no array, a minha dúvida é a seguinte, como eu faça para criar o array sem saber a quantidade de linhas.
Pensei em fazer com array para minimizar o código pois assim ficaria de uma forma automatica,
Dificl explicar vou tentar colocar os códigos para exemplificar.

[ô]LISTA IMPRESSORAS
strComputer = [Ô]SERVIDOR2[Ô]
Set objWMIService = GetObject([Ô]winmgmts:[Ô] & [Ô]{impersonationLevel=impersonate}!\\[Ô] & strComputer & [Ô]oot\cimv2[Ô])

Set colPrintQueues = objWMIService.ExecQuery ([Ô]Select * from Win32_PerfFormattedData_Spooler_PrintQueue Where [Ô] & [Ô]Name <> [ô]_Total[ô][Ô])

For Each objPrintQueue in colPrintQueues
Wscript.Echo objPrintQueue.Name
Next

Aqui em pensei em criar uma array gravando o numero e a impressora ( 1 - IMPRESSORA A).
Quando o usuário digitar o numero 1 eu vou no array e sei que é a impressora A.

[ô]ARRAY
Dim result
Set result = CreateObject([Ô]scripting.dictionary[Ô])

result([Ô]1[Ô]) = [Ô]A[Ô]
result([Ô]2[Ô]) = [Ô]B[Ô]
result([Ô]3[Ô]) = [Ô]C[Ô]
result([Ô]4[Ô]) = [Ô]D[Ô]

wscript.echo (result([Ô]1[Ô]))

Aqui eu sei que ao passar o parametro [Ô]1[Ô] ele vai retornar A.

Em resumo minha dúvida é como transformar a lista de impressora (Wscript.Echo objPrintQueue.Name) em um array.
LVFIOROT 31/01/2013 17:33:12
#418518
Resposta escolhida
segue um exemplo de acesso.

strComputer = [Ô]localhost[Ô]
Set objWMIService = GetObject([Ô]winmgmts:[Ô] & [Ô]{impersonationLevel=impersonate}!\\[Ô] & strComputer & [Ô]oot\cimv2[Ô])

Set colPrintQueues = objWMIService.ExecQuery ([Ô]Select * from Win32_PerfFormattedData_Spooler_PrintQueue Where [Ô] & [Ô]Name <> [ô]_Total[ô][Ô])

Dim c
Dim result

c = 1
Set result = CreateObject([Ô]scripting.dictionary[Ô])

For Each objPrintQueue in colPrintQueues
[ô]Wscript.Echo objPrintQueue.Name
result.Add c , objPrintQueue.Name
c = c + 1
Next

[ô]ARRAY

For Each r in result
Wscript.Echo result.Item(r)
Next

[ô]result([Ô]1[Ô]) = [Ô]A[Ô]
[ô]result([Ô]2[Ô]) = [Ô]B[Ô]
[ô]result([Ô]3[Ô]) = [Ô]C[Ô]
[ô]result([Ô]4[Ô]) = [Ô]D[Ô]

wscript.echo (result(1))
ALEVALE 01/02/2013 08:12:13
#418555
Obrigado pela ajuda, acabei ajustando meu código e consegui fazer porém me deparei com uma situação que não sei o porque não está funcionando.
O código lista as impressoras inumera as mesmas porém quando eu informo a opção da impressora ele retorna um valor em branco.

Exemplo:
1 - IMPRESSORA A
2 - IMPRESSORA B

Quando eu informo 1 ele mostrar o valor A, mas quando eu informo qualquer outro numero ele mostrar o valor como branco, tem alguma ideia ?
Abaixo código:

Dim strComputer,intCont,result,Printer,teste

strComputer = [Ô]SERVIDOR2[Ô]
Set objWMIService = GetObject([Ô]winmgmts:[Ô] & [Ô]{impersonationLevel=impersonate}!\\[Ô] & strComputer & [Ô]oot\cimv2[Ô])
Set colPrintQueues = objWMIService.ExecQuery ([Ô]Select * from Win32_PerfFormattedData_Spooler_PrintQueue Where [Ô] & [Ô]Name <> [ô]_Total[ô][Ô])
Set result = CreateObject([Ô]scripting.dictionary[Ô])

[ô]CONTADOR
intCount=[Ô]1[Ô]

For Each objPrintQueue in colPrintQueues
if strImpressoras = [Ô][Ô] then
strImpressoras= intCount & [Ô] - [Ô] & ucase(objPrintQueue.Name)
call fncGravaArray(intCount,ucase(objPrintQueue.Name))
[ô]result(intCount) = ucase(objPrintQueue.Name)
else
strImpressoras= strImpressoras & vbCrlf & intCount & [Ô] - [Ô] & ucase(objPrintQueue.Name)
[ô]result(intCount) = ucase(objPrintQueue.Name)
call fncGravaArray(intCount,ucase(objPrintQueue.Name))
End if
intCount=intCount+1
Next

Printer = InputBox([Ô]Selecione uma impressora:[Ô] & vbCrlf & vbCrlf & strImpressoras & vbCrlf, [Ô]Digite um numero[Ô],[Ô][Ô])
call fncLeArray(Printer)

[ô]GRAVA VALORES NO ARRAY
Private function fncGravaArray (intOpcao,intValor)
wscript.echo intOpcao
wscript.echo & intValor
result(intOpcao) = intValor
End function

[ô]LE ARRAY
Private function fncLeArray(intOpcao)
wscript.echo intOpcao
wscript.echo result(intOpcao)
End function
ALEVALE 01/02/2013 08:37:05
#418556
Resolvido mandei converte os valores para integer e string .

Dim strComputer,intCont,result,Printer

strComputer = [Ô]SERVIDOR2[Ô]
Set objWMIService = GetObject([Ô]winmgmts:[Ô] & [Ô]{impersonationLevel=impersonate}!\\[Ô] & strComputer & [Ô]oot\cimv2[Ô])
Set colPrintQueues = objWMIService.ExecQuery ([Ô]Select * from Win32_PerfFormattedData_Spooler_PrintQueue Where [Ô] & [Ô]Name <> [ô]_Total[ô][Ô])
Set result = CreateObject([Ô]scripting.dictionary[Ô])

[ô]CONTADOR
intCount=[Ô]1[Ô]

For Each objPrintQueue in colPrintQueues
if strImpressoras = [Ô][Ô] then
strImpressoras= intCount & [Ô] - [Ô] & ucase(objPrintQueue.Name)
call fncGravaArray(intCount,ucase(objPrintQueue.Name))
else
strImpressoras= strImpressoras & vbCrlf & intCount & [Ô] - [Ô] & ucase(objPrintQueue.Name)
call fncGravaArray(intCount,ucase(objPrintQueue.Name))
End if
intCount=intCount+1
Next

Printer = InputBox([Ô]Selecione uma impressora:[Ô] & vbCrlf & vbCrlf & strImpressoras & vbCrlf, [Ô]Digite um numero[Ô],[Ô][Ô])
call fncLeArray(Printer)

[ô]GRAVA VALORES NO ARRAY
Private function fncGravaArray (intOpcao,intValor)
result(CInt(intOpcao)) = CStr(intValor)
End function

[ô]LE ARRAY
Private function fncLeArray(intOpcao)
wscript.echo result(CInt(intOpcao))
End function
Tópico encerrado , respostas não são mais permitidas