ASP CLASSICO ASP.NET C# SQL / DATABASE VB / VBA VB.NET Todos os fóruns 

VALORES FIXOS DE UM ARQUIVO TXT

 Tópico anterior Próximo tópico Novo tópico

VALORES FIXOS DE UM ARQUIVO TXT

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#470607 - 11/01/2017 14:29:37

CIMINOS
SAO VICENTE
Cadast. em:Julho/2012


por favor

tenho um arquivo de text que preciso pegar os retorno escritos nele ex.:

[STATUS]
Versao=SP-CTe-22-12-2016
TpAmb=2
VerAplic=SP-CTe-22-12-2016
CStat=107
XMotivo=Serviço em Operação
CUF=35
DhRecbto=29/12/2016 15:24:19
TMed=1
DhRetorno=30/12/1899
XObs=

OK: Rejeição: Consulta a uma Chave de Acesso muito antiga
[CONSULTA]
Versao=SP-CTe-22-12-2016
TpAmb=2
VerAplic=SP-CTe-22-12-2016
CStat=731
XMotivo=Rejeição: Consulta a uma Chave de Acesso muito antiga
CUF=35
ChCTe=35131211510992000113570010000000101755779042
DhRecbto=30/12/1899
NProt=
DigVal=

preciso pegar esse valores e jogar em um listbox ou textbox separados:

[CONSULTA]
Versao=SP-CTe-22-12-2016
TpAmb=2
VerAplic=SP-CTe-22-12-2016
CStat=731
XMotivo=Rejeição: Consulta a uma Chave de Acesso muito antiga
CUF=35
ChCTe=35131211510992000113570010000000101755779042
DhRecbto=30/12/1899
NProt=
DigVal=

alguém tem uma dica ?








#470610 - 11/01/2017 15:53:39

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Isso me parece um arquivo com estrutura semelhante aos arquivos ".ini". Você poderia tranquilamente usar a mesma metodologia

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#470615 - 11/01/2017 17:36:31

CIMINOS
SAO VICENTE
Cadast. em:Julho/2012


ola Desculpa não fui muito claro e obrigado pelo retorno,


então preciso pegar todos dados de um txt ou um textbox com uma palavra e filtrar ex.: [INICIO]  x [FIM]

[dados]
.... conteúdo
[dados]

só aparecer no Listbox o que esta entre essas tags

ja adiantei assim,

Dim Conteudo As String
        If txt.Text.Contains("[ENVIO]") Then
            Conteudo = txt.Text.Substring(txt.Text.IndexOf("[ENVIO]"), _
                     txt.Text.IndexOf("[RETORNO]") - txt.Text.IndexOf("[ENVIO]"))
           txt_de_Saida.Text = Code

        End If

ele aparece apenas o primeiro, precisava aparecer todos que esta na txt











#470616 - 11/01/2017 17:48:50

NICKOSOFT
SANTO ANDRE
Cadast. em:Maio/2009


Nao vejo começo e fim, mas experimente readline então



#470706 - 14/01/2017 15:18:04

PLUGSOFTSM
SANTA MARIA
Cadast. em:Julho/2015


Por que vc não usa um Split para separar o conteúdo do teu arquvo em blocos de texto
Depois navega pelos blocos
Ficaria algo assim

dim A() as string = [texto do arquivo].Split("[palavra chave]")

for Each S as string in A
  'Código para tratar o texto do bloco
Next



#470731 - 15/01/2017 22:25:52

CIMINOS
SAO VICENTE
Cadast. em:Julho/2012


Citação:
:
Por que vc não usa um Split para separar o conteúdo do teu arquvo em blocos de texto
Depois navega pelos blocos
Ficaria algo assim

dim A() as string = [texto do arquivo].Split("[palavra chave]")

for Each S as string in A
  'Código para tratar o texto do bloco
Next



ola obrigado por responder e atenção. entao esse método, nao pegaria so o caracter, pois se eu colocar na pesquina "ENVIO", ele pegara tudo que tiver as letras ?

Preciso pegar um bloco de informações repetidas em um txt ou textbox, exemplo

[ENVIO]
Versao=SP-CTe-22-12-2016
TpAmb=2
VerAplic=SP-CTe-22-12-2016
CStat=103
XMotivo=Lote recebido com sucesso
CUF=35
NRec=351000010470535
DhRecbto=28/12/2016 17:15:13
TMed=1
Rejeição: Falha no Schema XML do CT-e
[RETORNO]
Versao=SP-CTe-22-12-2016
TpAmb=2
VerAplic=SP-CTe-22-12-2016
NRec=351000010470535
CStat=225
XMotivo=Rejeição: Falha no Schema XML do CT-e
CUF=35
----------------------------------aqui ele pula linha -----------------------

e fica encaixando as atualizações neste formato em blocos começando com [Envio]

obrigado pela força










#470748 - 16/01/2017 12:06:19

PLUGSOFTSM
SANTA MARIA
Cadast. em:Julho/2015


Sim... O Split lê o bloco de texto entre os caracteres delimitadores, independente do número de linhas ou quantidade de caracteres



#470750 - 16/01/2017 12:30:34

CIMINOS
SAO VICENTE
Cadast. em:Julho/2012


Citação:
:
Sim... O Split lê o bloco de texto entre os caracteres delimitadores, independente do número de linhas ou quantidade de caracteres


entao,  o Split funciona apenas caracteres delimitadores e nao para palavras ou blocos

abs




#470754 - 16/01/2017 13:29:27

PLUGSOFTSM
SANTA MARIA
Cadast. em:Julho/2015


assim
Digamos que vc tenha a seguinte estrutura

Bloco
Linha 01
linha 02
Linha 03
Linha 04

Bloco
Linha 01
Linha 02

Bloco
Linha 01
linha 02
Linha 03
Linha 04
Linha 05

E todo o texto acima estiver numa variável do tipo string chamada X por exemplo

se Fizer
Dim A() as string = X.split("Boloco")

Vc terá A formando um vetor com 3 valores
A(0) = Linha 01
           linha 02
           Linha 03
           Linha 04

A(1) = Linha 01
           Linha 02

A(2) = Linha 01
           linha 02
           Linha 03
           Linha 04
           Linha 05

Crie um programinha com os dados acima e depois execute
For each S as string in A
   Msgbox S
Next

E vai ver o resultado




#470756 - 16/01/2017 13:39:24

CIMINOS
SAO VICENTE
Cadast. em:Julho/2012


Citação:
:
assim
Digamos que vc tenha a seguinte estrutura

Bloco
Linha 01
linha 02
Linha 03
Linha 04

Bloco
Linha 01
Linha 02

Bloco
Linha 01
linha 02
Linha 03
Linha 04
Linha 05

E todo o texto acima estiver numa variável do tipo string chamada X por exemplo

se Fizer
Dim A() as string = X.split("Boloco")

Vc terá A formando um vetor com 3 valores
A(0) = Linha 01
           linha 02
           Linha 03
           Linha 04

A(1) = Linha 01
           Linha 02

A(2) = Linha 01
           linha 02
           Linha 03
           Linha 04
           Linha 05

Crie um programinha com os dados acima e depois execute
For each S as string in A
   Msgbox S
Next

E vai ver o resultado




obrigado pelo retorno e ajuda , como te falei acima

Dim A() As String = txtSai.Text.Split("[ENVIO]")
        For Each S As String In A
            MsgBox(S)
        Next



ele vai buscar delimitar apenas o  "[" - esse é o Resultado

a cada [ da uma mensagem


obrigado



#470759 - 16/01/2017 16:08:45

ELUCIMAR
GOIANIA
Cadast. em:Dezembro/2003


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")

E.A.M

 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário