..:: MX Studio Fóruns ::..: Problemas com Switch - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Problemas com Switch Problema estranho com Switch

#1 User is offline   rocknroll 

  • Group: Membros
  • Posts: 2
  • Joined: 15-August 11

Posted 15 August 2011 - 11:37 PM

Boa noite a todos,

Não sou um programador experiente em actionscript, na verdade só fiz programações básicas... Porém me deparei com uma situação que não consigo descobrir o problema.

Fiz uma rotina com switch composto por aproximadamente 1440 cases... São muitos, mas não encontrei outra forma de fazer. Na compilação nenhum problema, nos testes é que surgiu a situação estranha.

A partir de um determinado CASE ele não executa mais os passos programados... A rotina DEFAULT também não funciona, mas na compilação não há erros. Se eu apagar boa parte dos CASE o problema some, porém já apaguei partes diferentes, EX os 500 primeiros, depois os 500 últimos e nestas situações funcionou normal. Eu sei que a estrutura de todos os CASE está correta, mas...

Algúem sabe me dizer se existe um limite para o número de CASE dentro do SWITCH? Já tiveram problema semelhante? Não sei se existe alguma configuração da compilação que possa resolver o problema...

Muito obrigado a todos.

Rock N Roll
Marco Oliveira
0

#2 User is offline   Rodrigo Pixel 

  • Group: Moderadores
  • Posts: 1279
  • Joined: 07-May 07

Posted 16 August 2011 - 01:09 PM

Pelo que sei, switch case não tem limites. Mas dependendo do seu objetivo, poderá otimizar e automatizar um pouco as coisas utilizandoloop for e if else.

Não sei se isso te ajuda, mas segue um exemplo com loop for + if else:
- Cria uma lista array pra cadastrar todos seus itens;
- Cria um loop for para automatizar a buscar pelo item que deseja resgatar nesta lista, utilizando o if else.

No código abaixo, criei uma lista onde está cadastrado 5 números. No loop for, faço a busca pelo valor que quero resgatar, no caso, busquei pelo valor numero 2 que está na lista. Se caso o valor que foi buscado não for encontrado, ele retorna uma mensagem.

//cadastra os items na lista, no teste estou cadastrando apenas numeros
var itemLista:Array = [1, 2, 3, 4, 5];
//qual valor você quer procurar na lista
var valorDeProcura:Number = 2;

//pega quantidade de valores que foi cadastrado na lista array
var quantidade:Number = itemLista.length;

//utiliza o loop for que irá percorrer por toda lista em busca do "valor de procura"...
for(var i:Number=0; i<quantidade; ++i)
{
	//se o item atual da lista é igual ao valor de procura, faz algo...
	if(itemLista[i] == valorDeProcura)
	{
		trace("valor encontrado "+ itemLista[i]);
		break; //se já encontrou, não continue procurando, sai do loop for
	}
	//se não for encontrado o item na lista, faz outra coisa...
	else
	{
		trace("valor não foi encontrado na lista.");
	}
}


Abraço.
0

#3 User is offline   rocknroll 

  • Group: Membros
  • Posts: 2
  • Joined: 15-August 11

Posted 17 August 2011 - 05:47 PM

Boa tarde Rodrigo,

Obrigado pela ajuda.

Os valores verificados são digitados usando um teclado virtual. São formados por 3 digitos formados por Número Número Letra ou Letra Número Número. Existem 1440 valores possíveis, o restante é considerado inválido. Como este teclado não faz distinção sobre a ordem dos dígitos, existem muito possíbilidades. Portanto uma vez digitado o valor, eu "junto" cada um deles formando um único dado (EX: Dig1 = 1, Dig2 = 4, Dig3 = Y, junto formando 14Y, armazeno na variável temp e fazo o switch com esta variável).

Fiz uma rotina no mesmo padrão para outros valores de 3 e 4 dígitos e rodou blz. A única real mudança para esta nova rotina é a adição de novos CASES... Continuo tentando descobrir o problema, se não conseguir nada até o final desta semana vou colocar alguns LISTS e controlar de forma mais simples, porém visualmente não será como eu queria.

Obrigado novamente.
0

#4 User is offline   RONYTORRES 

  • Group: Moderadores
  • Posts: 385
  • Joined: 07-December 06

Posted 18 August 2011 - 01:43 PM

Porque não cadastra essas combinações num XML, carrega ele e populando um ARRAY, e tenta com essa ideia veja se atende suas intenções:

var Codigos:Array = new Array("14Y","G23","52H");//aqui o array já possui conteúdo.

function validaCodigo(cod:String):Boolean {
	if (Codigos.toString().indexOf(cod) > -1) {
		return true;
	} else {
		return false;
	}
}

function buscaCodigo(cod:String):void {
	if (validaCodigo(cod)) {
		trace("Seu código, " + cod + ", foi localizado.");
	} else {
		trace("Desculpe " + cod + ", não está na lista.");
	}
}

buscaCodigo("14Y");

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)