Ir para conteúdo
  • Cadastre-se

dev botao

Acbrecf.modelo Converter String Em Int


  • Este tópico foi criado há 3942 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde pessoal, este é meu primeiro post aqui no fórum, gostaria de saber se existe um método para converter o nome da impressora no seu número (ModeloECF) como no Exemplo_c.exe onde a aplicação pede o Número correspondente a impressora. Estou estudando um fonte do Albert Eije, em seu fonte ele faz algo parecido com isso:
 
    FDataModule.ACBrECF.Modelo = (ModeloECF)Convert.ToInt32(Configuracao.ModeloImpressora);
 
Porém ao compilar o VS2010 me retorna o seguinte erro:
 
System.FormatException was unhandled
  HResult=-2146233033
  Message=A cadeia de caracteres de entrada não estava em um formato incorreto.
  Source=mscorlib
  StackTrace:
       em System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
       em System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
       em System.Convert.ToInt32(String value)
       em PafEcf.View.FCaixa.ConfiguraACBr() na C:\Projeto\PAF\View\UCaixa.cs:linha 329
       em PafEcf.View.FCaixa.FormCreate() na C:\Projeto\PAF\View\UCaixa.cs:linha 191
       em PafEcf.View.FCaixa..ctor() na C:\Projeto\PAF\View\UCaixa.cs:linha 125
       em PafEcf.tsProgram.Main(String[] args) na C:\Projeto\PAF\tsProgram.cs:linha 15
       em System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       em System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       em Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       em System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       em System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       em System.Threading.ThreadHelper.ThreadStart()
  InnerException: 
 
 
Quando eu passo o número correspondente ao Modelo em meu caso (Bematech) número 2 
ex: FDataModule.ACBrECF.Modelo = (ModeloECF)2;
a aplicação funciona normalmente.
 
O que eu posso estar fazendo errado? Qualquer sugestão ajuda, sou novo no AcBr estes são meus primeiro testes.
 
Caso não exista uma forma de fazer isso, terei que criar um método usando um switch para "transformar" o modelo do ECF em seu respectivo código no ModelECF. Porém penso que se o Albert fez desta forma, deve existir algum meio mais clean para realizar esta tarefa.
 
 
Link para o comentário
Compartilhar em outros sites

Cara o que o albert fez foi pegar o enum do ModeloECF e converteu em int na hora de salvar e na hora de usar fez o oposto.

O erro que mostra ai na sua excpetion é que o string q você passou para o convert não é um numero inteiro e não tem nada haver com a dll do ACBrFramework.

Confira a string passada para a função Convert.ToInt32().

  • Curtir 1

 

Link para o comentário
Compartilhar em outros sites

Não tem como converter esta string para numero.

Como eu disse você tem q passar o numero da enum para poder usar esta função.

Não tem como converter isso para o modelo de ecf oq vc precisa salvar é o index do enum.

(int)ModeloECF.Bematech

Assim você pega o index correto, e na hora de passar para o componente você faz.

(ModeloECF)Convert.ToInt32(index)

passando aquela string você não vai conseguir.

Para conver um string para enum você teria que fazer diferente, e mesmo assim sua string estaria errada.

string modeloecf = ModeloECF.Bematech.ToString();
Nullable<ModeloECF> mod = null;
Enum.TryParse<ModeloECF>(modeloecf, out mod);

Não é querendo ser chato mas isso é o basico da programação.

  • Curtir 1

 

Link para o comentário
Compartilhar em outros sites

Não querendo ser chato também, mas o correto de sua frase seria assim:

 

"Não é querendo ser chato, mas isso é o básico da programação." afinal isso é o básico do português não é mesmo? (rsrs)

Brincadeiras a parte suas dicas foram de grande ajuda, agora sei que o código do Albert esta incompleto, e graças aos seus "toques" já sei o que preciso fazer para implementar, desde o começo eu sabia que não poderia fazer esta conversão o que eu queria mesmo era tentar entender o que o Albert estava fazendo e graças a você eu consegui. Se quiser posso te mandar os fontes do protótipo do PAF-ECF para analisar com calma.

 

Mais uma vez muito obrigado e me desculpe pela brincadeira inoportuna =P

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3942 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.