Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fredericoafd

Como ler arquivos TXT no VB6 ?

Recommended Posts

Valeu pela dica mas ainda não conegui fazer, todas explicações não deram certo, deve ser porque sou muito leigo no assunto... teria alguma outra fonte de informação ou informação mais detalhada para passar?Obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com *todos* os exemplos acima você não conseguiu fazer o que você quer? O quê, exatamente, você não conseguiu?Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o seguinte: Eu tenho que pegar um arquivo chamado "c:\ping.txt" (resultado de um ping), pegar os últimos caracteres da penúltima linha, que são números, e fazer uma condição(ex: se X = 0 então... senão...) entendeu?Obrigado pela atenção...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, entendi. Mas acho que você só deveria ser mais específico em relação ao que você não está conseguindo. Ler as linhas do arquivo? Saber qual é a penúltima linha? Pegar os últimos caracteres da mesma? De qualquer maneira, veja se é isso que você quer:

 

arq = "c:\ping.txt"		n = FreeFile()	Open arq For Input As #n	conteúdo = Input(LOF(n), n)	Close #n		linhas = Split(conteúdo, vbCrLf)	penúltima = linhas(UBound(linhas) - 1)	últimos10caracteres = Right(penúltima, 10)		MsgBox últimos10caracteres
Abraços,

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você ainda nao conseguir use o FileSystemObject, alem de ser melhor e com mais recursos ele é mais intuitivo com funções mais claras para você fazer o que precisa fazer

 

você só precisa referenciar "Microsoft Scripting Runtime"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito Obrigado, era isso mesmo que eu estava precisando, eu não sabia que tinhas essa função Unbound... Na verdade sou muito crú no assunto...Muito obrigado mesmo!Falow...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, sem querer abusar da boa vontade do amigo, como faria para selecionar em determinada linha, no exemplo foi a penúltima, um conjunto de caracteres? Por exemplo, tenho o seguinte texto:"M¡nimo = 5ms, M ximo = 57ms, M‚dia = 12ms"Eu quero guardar apenas o valor "57ms"Mais uma vez obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for um pedaço fixo, você pode utilizar a função Mid():

 

s = "Mínimo = 5ms, Máximo = 57ms, Média = 12ms"	pedaço = Mid(s, 24, 4)	MsgBox pedaço

Agora se for um pedaço que possa variar em tamanho e ponto de início (o que eu realmente acredito que seja, já que se o valor de "Mínimo" for 50 ao invés de 5 todos os demais dados vão chegar uma casa para frente), então o melhor seria utilizar Split() para dividí-los:

 

s = "Mínimo = 5ms, Máximo = 57ms, Média = 12ms"sepv = Split(s, ", ") 'Divide a string por vírgulasdados = Split(sepv(1), " = ") 'Divide o segundo elemento da lista pelo " = "valor = dados(1) 'Pega o segundo elemento da divisão acimaMsgBox valor

Certo? ;)

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado pelas dicas... você poderia e dizer se posso armazenar esses valores em uma string? Por exemplo:O arquivo "ping.txt" contém exatamente o seguinte:Disparando contra 192.168.17.1 com 32 bytes de dados:Resposta de 192.168.17.1: bytes=32 tempo=7ms TTL=255Resposta de 192.168.17.1: bytes=32 tempo=6ms TTL=255Resposta de 192.168.17.1: bytes=32 tempo=5ms TTL=255Resposta de 192.168.17.1: bytes=32 tempo=8ms TTL=255Resposta de 192.168.17.1: bytes=32 tempo=6ms TTL=255Resposta de 192.168.17.1: bytes=32 tempo=96ms TTL=255Resposta de 192.168.17.1: bytes=32 tempo=8ms TTL=255Resposta de 192.168.17.1: bytes=32 tempo=5ms TTL=255Resposta de 192.168.17.1: bytes=32 tempo=5ms TTL=255Resposta de 192.168.17.1: bytes=32 tempo=6ms TTL=255Estat¡sticas do Ping para 192.168.17.1: Pacotes: Enviados = 10, Recebidos = 10, Perdidos = 0 (0% de perda),Aproximar um n£mero redondo de vezes em milissegundos: M¡nimo = 5ms, M ximo = 96ms, M‚dia = 15msEstou tentando armazenar os valores em uma variável assim:Private Sub Form_Load()certo = "(0% de perda),"arq = "c:\ping.txt" n = FreeFile() Open arq For Input As #n conteúdo = Input(LOF(n), n) Close #n linhas = Split(conteúdo, vbCrLf) penúltima = linhas(UBound(linhas) - 3) caracteres = Right(penúltima, 16) If caracteres = "(0% de perda)," ThenMsgBox "OK! O ping está normal"ElseMsgBox "Algo errado na rede"End IfEnd Submas não dá certo, sempre a msgbox exibida é a "Algo errado na rede"Pode!Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, você pede para pegar 16 caracteres de antepenúltima, certo? Mas você compara com apenas 14 caracteres da string "(0% de perda),". Acho que o problema está aí, pois para serem iguais as duas strings devem possuir o mesmo tamanho.Abraços,Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes do If, coloca o seguinte:

 

Debug.Print caracteresDebug.Print "(0% de perda),"

Na janela Immediate vão aparecer os valores (se esta janela não estiver na tela, pressione CTRL+G). Verifique se as duas linhas são mesmo iguais, inclusive os espaços na frente e no fim (pressione a tecla END em ambas as linhas e veja se o cursor vai para a mesma posição).

 

Abraços,

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, muito obrigado pelas dias, anfim, consegui fazer o que eu queria. Tinha um "enter" atyrapalhando o processo, aí eu usei uns comandos para tirar ele e deu certo! Valew pelas dicas! Muito obrigado.O algoritimo ficou assim:Private Sub Form_Load()arq = "c:\ping.txt" n = FreeFile() Open arq For Input As #n conteúdo = Input(LOF(n), n) Close #n linhas = Split(conteúdo, vbCrLf) penúltima = linhas(UBound(linhas) - 3) chretira = Right(Right(penúltima, 16), 2) caracteres = Replace(Right(penúltima, 15), chretira, "") MsgBox caracteres If caracteres = "(0% de perda)" ThenMsgBox "OK! O ping está normal"ElseMsgBox "Algo errado na rede"End IfEnd Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.