VALORES FIXOS DE UM ARQUIVO TXT

CIMINOS 16/01/2017 17:02:55
#470761
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

ELUCIMAR 16/01/2017 17:36:09
#470762
CIMINOS
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[Ô])
CIMINOS 19/01/2017 23:55:48
#470872
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
ELUCIMAR 20/01/2017 09:12:19
#470876
CIMINOS

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
Página 2 de 2 [14 registro(s)]
Faça seu login para responder