USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  CONSULTA EM ARQUIVO TEXTO
LUIZ PEDRO
SAO PAULO
SP - BRASIL
Postada em 08/04/2008 20:08 hs            
Olá galera

Preciso que meu programa leia o arquivo texto que possui varios campos, preciso que ele localize o codigo na linha e exiba na caixa de texto as linhas com o codigo localizado, mas nao sei onde estou errando que o programa esta pulando a linha para carregar o arquivo na caixa de texto. Alguem pode me dar uma força ai !! Segue o meu codigo.

Private Sub cmd_abrir_Click()
Dim arq As String
Dim linha As String
Dim totallinhas As Integer

arq = FreeFile
CommonDialog1.InitDir = App.Path
CommonDialog1.Filter = "Arquivos texto (*.txt)|*.txt|Todos os arquivos (*.*)|*.*|"
CommonDialog1.FilterIndex = 2
CommonDialog1.ShowOpen
arq = CommonDialog1.FileName
Open arq For Input As #1
Do While Not EOF(1)
  Line Input #1, linha
  codigo = Mid(linha, 34, 3)
If codigo = "010" Then
  
   totallinhas = totallinhas + 1
  Form1.RichTextBox1.Text = Form1.RichTextBox1.Text + linha + Chr$(13) + Chr$(10)
  Else
  MsgBox "codigo nao encontrado"
  End If
  Exit Do
  Loop
  Close #1
  
MsgBox totallinhas
     
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 08/04/2008 20:39 hs            

Faça estas alterações:

Private Sub cmd_abrir_Click()

Dim arq As Integer
Dim Linha As String
Dim codigo As String
Dim totallinhas As Integer
Dim Caminho As String


CommonDialog1.InitDir = App.Path
CommonDialog1.Filter = "Arquivos texto (*.txt)|*.txt|Todos os arquivos (*.*)|*.*|"
CommonDialog1.FilterIndex = 2
CommonDialog1.ShowOpen
 
Caminho = CommonDialog1.FileName


arq = FreeFile

Open Caminho For Input As arq

totallinhas = 0
Do Until EOF(arq)

Line Input #arq, linha
     codigo = Mid(linha, 34, 3)
If codigo = "010" Then
     totallinhas = totallinhas + 1
        If totallinhas = 1 Then Form1.RichTextBox1.Text = Linha
        If totallinhas > 1 Then
            Form1.RichTextBox1.Text = Form1.RichTextBox1.Text + Chr(13) & Chr(10) + Linha
        End If
End If

Loop

Close arq

End Sub

 

Agora teste e diga se funcionou

TÓPICO EDITADO
 
LUIZ PEDRO
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 09/04/2008 17:06 hs            
E ai Treze blz !!

O codigo funcionou ok ! valeu a força !
Só fiquei em duvida neste trecho do codigo, vc pode me esclarecer ?

If codigo = "015" Then
    totallinhas = totallinhas + 1
    If totallinhas = 1 Then Form1.RichTextBox1.Text = Form1.RichTextBox1.Text = linha
     If totallinhas > 1 Then
     Form1.RichTextBox1.Text = Form1.RichTextBox1.Text + Chr$(13) + Chr$(10) + linha
     End If
       End If
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 09/04/2008 17:47 hs            
Na realidade o que acontecia:
 
a linha era quebrada antes de ser acrescentado algo no Richtextbox, como se você abrisse um richtext e pressionasse enter antes de começar a escrever, ficando assim a primeira linha em branco, então que que foi que eu fiz:
 
como havia o totallinhas ficou mais fácil, veja a explicação:
 
  ' se for a primeira linha apenas acrescente o conteudo
  If totallinhas = 1 Then Form1.RichTextBox1.Text = Linha 
  ' se for maior que a primeira linha então pegue esta linha e quebre em paragrafo
  If totallinhas > 1 Then
            Form1.RichTextBox1.Text = Form1.RichTextBox1.Text + Chr(13) & Chr(10) + Linha
   End If
 
entendeu
 
 
 
   
LUIZ PEDRO
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 10/04/2008 11:51 hs            
Entao vc quer dizer que se o conteudo for igual ao comprimento do richtextbox, imprime o conteudo e caso for maior quebre em paragrafo, é isso ?
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 10/04/2008 12:17 hs            
+ ou - isto, na realidade você determina quando quebrar a string em paragrafo eexemplo:
 
você possui o seguinter texto salvo desta forma
 
Ainda que eu ande pelo vale
da sombra e da morte não
temerei mal algum.
 
A forma de se enviar este arquivo texto para o RichTextBox seria esta:
 
pegar linha por linha e enviar para o RichTextBox, mas se isto fosse feito desta forma:
 
Open Caminho For Input As arq
Do Until EOF(arq)
Line Input #arq, linha
RichTextBox.text=linha
Loop
 
Na Richtext seria exibido assim:
 
temerei mal algum ' ou seja somente a ultima linha, pois uma seria gravada em cima da outra
 
Outra forma seria esta:
 
Open Caminho For Input As arq
Do Until EOF(arq)
Line Input #arq, linha
RichTextBox.text=RichTextBox.text + linha
Loop
 
Porém o resultado não seria o esperado, pois seria exibido desta forma:
 
Ainda que eu ande pelo vale da sombra e da morte não temerei mal algum.
 
Tudo em uma unica linha:
 
Por isso o fato de se quebrar em paragráfos, está função é feita pelas Chr$(13) + Chr$(10), estas agem como a tecla enter, ou seja pega aprimeira linha e pressiona enter, pega segunda linha e enter, assim por diante:
 
No seu caso é aqui que a função age:
 
If codigo = "010" Then                                              ' se o 010 for encontrado na linha
totallinhas = totallinhas + 1                                        ' soma-se 1 a totallinhas
If totallinhas = 1 Then Form1.RichTextBox1.Text = Linha  ' e se totallinhas for 1 então salve esta
                                                                             ' linha no RichTextBox
If totallinhas > 1 Then
' agora as demais linhas serão acrescidas porém antes será dado o enter
Form1.RichTextBox1.Text = Form1.RichTextBox1.Text + Chr(13) & Chr(10) + Linha
End If
End If
 
no seu problema inicial, o enter era dados antes de inserir qualquer texto ficando assim a linha em branco.
TÓPICO EDITADO
 
Página(s): 1/2      PRÓXIMA »

CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página