Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

wizzuu

Comprimento inferior a zero

Mensagens Recomendadas

wizzuu    1
wizzuu

Boa tarde.

Estou a fazer um programa no estágio em que preciso de ler os dados inseridos num ficheiro de texto, mas está a dar-me erro ...

e é um pouco urgente.

O código é este:

 Public Sub Ler_Registo_Requisitados()
Try
Dim FSFicheiro_registos As New FileStream(caminho, FileMode.Open, FileAccess.Read)
Dim SRRegisto_Requisitados As New StreamReader(FSFicheiro_registos)
Dim Ler_linha_de_registos As String
Dim P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 As Integer 'Para guardar a posição final de cada campo da linha de registo
lst_nomes.Items.Clear() 'Limpar a ListBox
Do Until SRRegisto_Requisitados.Peek = -1
Ler_linha_de_registos = SRRegisto_Requisitados.ReadLine
P1 = Ler_linha_de_registos.IndexOf(";") + 1 'Atibuição da posição do final de cada campo
P2 = Ler_linha_de_registos.IndexOf(";", P1) + 1
P3 = Ler_linha_de_registos.IndexOf(";", P2) + 1
P4 = Ler_linha_de_registos.IndexOf(";", P3) + 1
P5 = Ler_linha_de_registos.IndexOf(";", P4) + 1
P6 = Ler_linha_de_registos.IndexOf(";", P5) + 1
P7 = Ler_linha_de_registos.IndexOf(";", P6) + 1
P8 = Ler_linha_de_registos.IndexOf(";", P7) + 1
P9 = Ler_linha_de_registos.IndexOf(";", P8) + 1
P10 = Ler_linha_de_registos.IndexOf(";", P9) + 1
P11 = Ler_linha_de_registos.IndexOf(";", P10) + 1
P12 = Ler_linha_de_registos.IndexOf(";", P11) + 1
With bs
.nome = Ler_linha_de_registos.Substring(0, P1 - 1)
.morada = Ler_linha_de_registos.Substring(P1, P2 - P1 - 1)
.idade = Ler_linha_de_registos.Substring(P2, P3 - P2 - 1)
.datanasc = Ler_linha_de_registos.Substring(P3, P4 - P3 - 1)
.freg = Ler_linha_de_registos.Substring(P4, P5 - P4 - 1)
.motivo = Ler_linha_de_registos.Substring(P5, P6 - P5 - 1)
.sitsocial = Ler_linha_de_registos.Substring(P6, P7 - P6 - 1)
.dataatendimento = Ler_linha_de_registos.Substring(P7, P8 - P7 - 1)
.nragregado = Ler_linha_de_registos.Substring(P8, P9 - P8 - 1)
.rendimento = Ler_linha_de_registos.Substring(P9, P10 - P9 - 1)
.medico = Ler_linha_de_registos.Substring(P10, P11 - P10 - 1)
.apoios = Ler_linha_de_registos.Substring(P11)
End With
lst_nomes.Items.Add(bs.nome) 'Adicionar o nome do utente à ListBox
Loop
SRRegisto_Requisitados.Close()
Catch ex As System.IO.FileNotFoundException 'Tratamento de erro na abertura do ficheiro
mensagem = "O ficheiro de armazenamento de dados não foi encontrado" & vbNewLine & "Deseja criar um novo ficheiro?"
titulo = "Ficheiro de Registos"
botoes = MessageBoxButtons.YesNo
icone = MessageBoxIcon.Question
resposta = MessageBox.Show(mensagem, titulo, botoes, icone)
If resposta = Windows.Forms.DialogResult.Yes Then
Dim FSFicheiro_registos As New FileStream(caminho, FileMode.CreateNew)
FSFicheiro_registos.Close()
Else
Me.Close()
End If
End Try
End Sub

Dá-me erro nesta linha :

.medico = Ler_linha_de_registos.Substring(P10, P11 - P10 - 1)

e dá o seguinte erro:

dn78smg.png?1

"O comprimento não pode ser inferior a zero. - ArgumentOutOfRangeException was unhandled"

Gostaria que me pudessem ajudar...

Obrigado,

Cumprimentos.

Editado por apocsantos
geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.