boa tarde..sou iniciante em c#, tenho uma aplicação para fazer que é o seguinte: numa textbox insiro um numero quando carrego num botao ele vai a um ficheiro de texto (tipo base de dados) passa tudo para a textbox10, depois aqui vai verificar se existe esse numero.. se existir passa toda a informacao relativa ao numero que inseri para uma richtextbox, senao apresenta mensagem d erro... usei um for pra percorrer o array à procura do numero que foi inserido na caixa, ele passa tudo certo mas aqui o problema é que por o else estar dentro do for mesmo que o numero exista ele ta sempre a mostrar mensagem de erro. Alguem me ajuda a ver o codigo e o que estou a fazer mal? Como faço para aceder à ultima posicao de um array? privatevoid button1_Click(object sender, EventArgs e) { StreamReader rd = newStreamReader(@"C:\\teste.txt"); string texto= rd.ReadToEnd(); textBox10.Text = texto; rd.Close(); int i = 0; string id = textBox1.Text; string[] campo = newstring[1000]; string[] linha = newstring[1000]; linha = texto.Split('\n'); for (i = 0; i < linha.Length -1; i++) { campo = linha.Split('|'); if (id.CompareTo(campo[0]) == 0) { do { richTextBox2.Text = richTextBox2.Text + linha; i++; } while (linha != "") }else messagebox.show("O id nao foi encontrado"); } }
Boas. Antes de mais, sempre que colocas código utiliza as tags [CODE*][/CODE*] (sem *). O teu ciclo está sempre a devolver o erro porque tu comparas smp o id com a mesma string. Código: id.CompareTo([B]campo[0][/B]) Tens que trocar por campo para que compares todas as strings do array campo com o id. Utiliza o MessageBox.Show para fazer algum "debug" do teu código, caso não saibas fazer debug no visual studio. Imprimires as várias que estão a ser comparadas seria muito útil para perceberes o que está realmente a acontecer. No else abre e fecha as chavetas {}. Para acederes à ultima posição do array fazes array[array.Length-1] ou no teu caso, como tens o tamanho definido, podes fazer array[999]. O nome array deverá ser trocado pelo nome do teu array obviamente. Código: privatevoid button1_Click(object sender, EventArgs e) { StreamReader rd = newStreamReader(@"C:\\teste.txt"); string texto= rd.ReadToEnd(); textBox10.Text = texto; rd.Close(); int i = 0; string id = textBox1.Text; string[] campo = newstring[1000]; string[] linha = newstring[1000]; linha = texto.Split('\n'); for (i = 0; i < linha.Length -1; i++) { campo = linha[i].Split('|'); if (id.CompareTo(campo[[B]i[/B]]) == 0) { do { richTextBox2.Text = richTextBox2.Text + linha[i]; i++; } while (linha[i] != "") }else { Messagebox.show("O id nao foi encontrado"); } } }