VALORES FIXOS DE UM ARQUIVO TXT
Citação::
CIMINOS
Fiz um exemplo bem funcional:
Dim dicArquivoRetorno As New Dictionary(Of String, Dictionary(Of String, String))()
Dim lstStringFile As List(Of String) = File.ReadAllLines([Ô]C:ArquivoIni.ini[Ô]).ToList()
Dim nomeClasse As String = String.Empty
For i As Integer = 0 To lstStringFile.Count - 1
Dim linha As String = lstStringFile(i).Trim()
If linha = String.Empty Then Continue For
If linha.Contains([Ô][[Ô]) AndAlso linha.Contains([Ô]][Ô]) Then
nomeClasse = linha.Replace([Ô][[Ô], [Ô][Ô]).Replace([Ô]][Ô], [Ô][Ô])
dicArquivoRetorno.Add(nomeClasse, New Dictionary(Of String, String)())
Else
If nomeClasse = String.Empty Then Continue For
Dim dadosLinha As String() = linha.Split([Ô]=[Ô])
If dadosLinha.Count() < 2 Then Continue For
dicArquivoRetorno(nomeClasse).Add(dadosLinha(0).Trim(), dadosLinha(1).Trim())
End If
Next
[ô] Exemplo de como pegar os Dados
Dim consultaCStat As String = dicArquivoRetorno([Ô]CONSULTA[Ô])([Ô]CStat[Ô])
Dim consultaChaveCTe As String = dicArquivoRetorno([Ô]CONSULTA[Ô])([Ô]ChCTe[Ô])
Dim statusDhRecbto As String = dicArquivoRetorno([Ô]STATUS[Ô])([Ô]DhRecbto[Ô])
Dim statusDhRetornoe As String = dicArquivoRetorno([Ô]STATUS[Ô])([Ô]DhRetorno[Ô])
obrigado pelo apoio, entao esta dando esse erro na rotina
Fiz o tratamento deste erro testa ai:
Dim dicArquivoRetorno As New Dictionary(Of String, Dictionary(Of String, String))()
Dim lstStringFile As List(Of String) = File.ReadAllLines([Ô]C:\ArquivoIni.ini[Ô]).ToList()
Dim nomeClasse As String = String.Empty
For i As Integer = 0 To lstStringFile.Count - 1
Dim linha As String = lstStringFile(i).Trim()
If linha = String.Empty Then Continue For
If linha.Contains([Ô][[Ô]) AndAlso linha.Contains([Ô]][Ô]) Then
nomeClasse = linha.Replace([Ô][[Ô], [Ô][Ô]).Replace([Ô]][Ô], [Ô][Ô])
If dicArquivoRetorno.ContainsKey(nomeClasse) Then Continue For
dicArquivoRetorno.Add(nomeClasse, New Dictionary(Of String, String)())
Else
If nomeClasse = String.Empty Then Continue For
Dim dadosLinha As String() = linha.Split([Ô]=[Ô])
If dadosLinha.Count() < 2 Then Continue For
If dicArquivoRetorno(nomeClasse).ContainsKey(dadosLinha(0).Trim()) Then Continue For
dicArquivoRetorno(nomeClasse).Add(dadosLinha(0).Trim(), dadosLinha(1).Trim())
End If
Next
[ô] Exemplo pegar Dados
Dim consultaCStat As String = dicArquivoRetorno([Ô]CONSULTA[Ô])([Ô]CStat[Ô])
Dim consultaChaveCTe As String = dicArquivoRetorno([Ô]CONSULTA[Ô])([Ô]ChCTe[Ô])
Dim statusDhRecbto As String = dicArquivoRetorno([Ô]STATUS[Ô])([Ô]DhRecbto[Ô])
Dim statusDhRetornoe As String = dicArquivoRetorno([Ô]STATUS[Ô])([Ô]DhRetorno[Ô])
Citação::
CIMINOS
Fiz um exemplo bem funcional:
Dim dicArquivoRetorno As New Dictionary(Of String, Dictionary(Of String, String))()
Dim lstStringFile As List(Of String) = File.ReadAllLines([Ô]C:ArquivoIni.ini[Ô]).ToList()
Dim nomeClasse As String = String.Empty
For i As Integer = 0 To lstStringFile.Count - 1
Dim linha As String = lstStringFile(i).Trim()
If linha = String.Empty Then Continue For
If linha.Contains([Ô][[Ô]) AndAlso linha.Contains([Ô]][Ô]) Then
nomeClasse = linha.Replace([Ô][[Ô], [Ô][Ô]).Replace([Ô]][Ô], [Ô][Ô])
dicArquivoRetorno.Add(nomeClasse, New Dictionary(Of String, String)())
Else
If nomeClasse = String.Empty Then Continue For
Dim dadosLinha As String() = linha.Split([Ô]=[Ô])
If dadosLinha.Count() < 2 Then Continue For
dicArquivoRetorno(nomeClasse).Add(dadosLinha(0).Trim(), dadosLinha(1).Trim())
End If
Next
[ô] Exemplo de como pegar os Dados
Dim consultaCStat As String = dicArquivoRetorno([Ô]CONSULTA[Ô])([Ô]CStat[Ô])
Dim consultaChaveCTe As String = dicArquivoRetorno([Ô]CONSULTA[Ô])([Ô]ChCTe[Ô])
Dim statusDhRecbto As String = dicArquivoRetorno([Ô]STATUS[Ô])([Ô]DhRecbto[Ô])
Dim statusDhRetornoe As String = dicArquivoRetorno([Ô]STATUS[Ô])([Ô]DhRetorno[Ô])
Muito legal o seu código, eu coloquei isso em um listbox,
Dim consultaCStat As String = dicArquivoRetorno([Ô]ENVIO[Ô])([Ô]XMotivo[Ô])
Dim ConsultaXMotivo As String = dicArquivoRetorno([Ô]ENVIO[Ô])([Ô]NRec[Ô])
Dim ENVIODhRecbto As String = dicArquivoRetorno([Ô]ENVIO[Ô])([Ô]DhRecbto[Ô])
Dim RETORNODhRecbto As String = dicArquivoRetorno([Ô]RETORNO[Ô])([Ô]NRec[Ô])
Dim RETORNODhRetornoe As String = dicArquivoRetorno([Ô]RETORNO[Ô])([Ô]XMotivo[Ô])
[ô] ListBox1.Items.Clear()
ListBox1.Items.Add(consultaCStat)
ListBox1.Items.Add(ConsultaXMotivo)
ListBox1.Items.Add(ENVIODhRecbto)
ListBox1.Items.Add([Ô]------------------------------------[Ô])
ListBox1.Items.Add(RETORNODhRecbto)
ListBox1.Items.Add(RETORNODhRetornoe)
teria um jeito de colocar os blocos no listbox? , ex.
tudo que for [retorno] entrar no listbox?
muito obrigado pela atenção
Bem simples:
ListBox1.Items.Clear()
For Each dicItem In dicArquivoRetorno
ListBox1.Items.Add(dicItem.Key)
For Each item In dicItem.Value
ListBox1.Items.Add(item.Key & [Ô]=[Ô] + item.Value)
Next
ListBox1.Items.Add(New String([Ô]-[Ô], 200))
Next