ARQUIVO TEXTO - QUAL E ESSE PADRAO?

DONIZETE 10/04/2012 23:10:04
#399532
Boa Noite!

Tenho o arquivo texto abaixo, mas não é separado por virgulas. Qual esse padrão? Tem como jogar numa grid ou textboxes?

CodigoDescricaoValor UnitarioQuantidadeValor Total
116600055ESCOVA DE DENTES KIDS2,4024,80
116600578CREM DENTAL SENSITIVEL2,8038,40
116600586FRALDA DESCARTÁVEL NENEM4,80314,40
116600594DORIL GOTAS6,5516,55
116600187ALGODÃO EXTRA MACIO3,4026,80

apenas para entender vou desmembrar a primeira linha

[txt-color=#0000f0]166.. (código), Escova (Descrição), 2,40 (valor unitário), 2 (quantidade) e 4,80 (valor Total [/txt-color]


Se alguém puder me ajudar, agradeço
LLAIA 11/04/2012 09:29:11
#399563
Pelo que to vendo, é texto puro, mas percebo que a descrição tem comprimento variado no teu exemplo. No arquivo que vc tem, não existem espaços pra definir um comprimento fixo nos campos do arquivo?
ALEVALE 11/04/2012 13:42:43
#399589
Bom olhando assim por cima o que daria pra fazer é um [Ô]For percorrendo a string[Ô] verificando se cada elemento é numerico por exemplo quando não fosse vc saberia que é a [Ô]Descrição[Ô], continuaria o for até chegar na demais posições, dai é só ir quebrando a string ...
KERPLUNK 11/04/2012 13:53:48
#399592
é separado por vírgulas. Vc pode fazer um split. Um detalhe é que o valor deveria estar separado por ponto, deixando a vírgula reservada para separador de campo.
ALEVALE 11/04/2012 14:28:29
#399603
Também daria mas de qq forma teria que pegar o ultimo caracter antes da string e depois colocar ela no proxima quebra pois seria o valor.....
JONATHANSTECKER 11/04/2012 14:43:53
#399608

Caso não tiver nenhum separador e nehuma lógica 100% garantida, eu faria uma gambi mesmo...

Veja:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim Itens(4) As String
Itens(0) = [Ô]116600055ESCOVA DE DENTES KIDS2,4024,80[Ô]
Itens(1) = [Ô]116600578CREM DENTAL SENSITIVEL2,8038,40[Ô]
Itens(2) = [Ô]116600586FRALDA DESCARTÁVEL NENEM4,80314,40[Ô]
Itens(3) = [Ô]116600594DORIL GOTAS6,5516,55[Ô]
Itens(4) = [Ô]116600187ALGODÃO EXTRA MACIO3,4026,80[Ô]

For Each Item As String In Itens
Me.Separar(Item)
Next

End Sub

Friend Sub Separar(ByVal pTexto As String)

Dim Codigo As String = String.Empty
Dim Descricao As String = String.Empty
Dim ValorUnitario As String = String.Empty
Dim Quantidade As String = String.Empty
Dim ValorTotal As String = String.Empty

Codigo = Microsoft.VisualBasic.Left(pTexto, 9)
pTexto = pTexto.Remove(0, 9)

Dim FinalDescricao As Integer = 0
For Each Letra As Char In pTexto
If Char.IsNumber(Letra) Then
Exit For
End If
FinalDescricao += 1
Next
Descricao = Microsoft.VisualBasic.Left(pTexto, FinalDescricao)
pTexto = pTexto.Remove(0, FinalDescricao)

ValorUnitario = Microsoft.VisualBasic.Left(pTexto, pTexto.IndexOf([Ô],[Ô]) + 3)
pTexto = pTexto.Remove(0, pTexto.IndexOf([Ô],[Ô]) + 3)

Quantidade = Microsoft.VisualBasic.Left(pTexto, 1)
pTexto = pTexto.Remove(0, 1)

ValorTotal = pTexto

Me.DataGridView1.Rows.Add(Codigo, Descricao, ValorUnitario, Quantidade, ValorTotal)

End Sub


Observação: Só use isso em últimos casos. hehehe
Mostrei como daria para fazer, agora se essa é a lógica correta não sei dizer.
ALEVALE 11/04/2012 15:00:58
#399610
Uaua e que pensava que a minha cambi era nervosa...rsrsrs
Mas ficou bem melhor que a minha !!!
Tópico encerrado , respostas não são mais permitidas