Jump to content

Comprimento inferior a zero


wizzuu
 Share

Recommended Posts

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.

Edited by apocsantos
geshi
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.