CSharp ajuda!!!

hjmb

Membro
Olá a todos tou a fazer um programa em CSharp que faz a leitura dos dados enviados por uma Pic pela porta seial. e com esses valores desenho um grafico, mas ao converter de stringa para inteiro de vez enquando da erro porque recebe um valor que é um quadrado ou varios pontos de interrogaçao, se alguem ja teve ou sabe como posso resolver este probela???

Um muito obrigado uma optima semana para todos
 
Não sei se percebi bem o teu problema... mas se nao consegues converter de string para inteiro usa os seguintes métodos:

int Int32.Parse(String s)
ou
bool Int32.TryParse(String s, out int result)
 
Não sei se percebi bem o teu problema... mas se nao consegues converter de string para inteiro usa os seguintes métodos:

int Int32.Parse(String s)
ou
bool Int32.TryParse(String s, out int result)


Boa tarde Manuel Felicio o meu problema esta que ao converter da erro porque na string q vou converter contem um caracter que é um quadrado ou um ponto de interrogaçao , caracterews esses qua nao são possiveis de serem convertidos em inteiros, a conversao da stringa funciona bem, mas quando aparece e esse tal caracter d
a erro, não faço a minima ideia de onde aparece esse simbolo o quadrado e o ponto de interrogação, a mim parece-me q dese ser lixo q ele recebe na porta serial, nao não faço a minima ideia de como eleminar esses simbolos, um muito obrigado e boa semana.
 
faz um parse à string. Vai caracter a caracter do inicio para o fim enquanto o caracter actual for um inteiro...
mete esse teste dentro de um try catch pra não apanhares com uma excepção qd vier de lá o tal caracter estranho. Qt a código não me apetece escrever... mas é fácil.

nota: De referir que caso o caracter actual seja um inteiro deves concatena-lo com outra string temporária. Essa string terá no final do ciclo o inteiro que tu procuras. Depois basta usar o int.Parse...

Bom trabalho
 
Última edição:
@ malato

Claro que podes sempre fazer o calculo char a char e somar ao inteiro.
Por exemplo
val = val * 10 + char_corrente - '0'

De notar que não sei C#, por isso não sei se o '0' é válido em C#, em C o '0' tem o ascii correspondente que é o 48.
 
Um muito obrigado a todos principalmente ao Malato, já andava a dois dias a tentar resolver o problema, ja consegui resolver usei o try and catch, um muito obrigado.
 
Back
Topo