LER CABE?ALHO DE ARQUIVO
Line Input #iFF
consigo estrair o conteudo ( não exatamente certinho ) mas funciona, consigo extrair o conteudo necessario.Citação:DMÀ={[Ô]Id[Ô] : 3,[Ô]dataVersion[Ô] : 0,[Ô]detail[Ô] : [ { [Ô]basePoints[Ô] : 0, [Ô]boostIpEarned[Ô] : 0.0 ....................... e por ae vai...................... teminando com algumas linhas tipo isso ì€aìÂãžÃ¼ƒ¦Cˆ*ª/ðV×Ã-5¶J¦
em VB.net o maximo que consigo usando
StreamReader
entre outras maneiras é retornar NADA ou Citação:apenas assim, algo do tipo ì€aìÂãžÃ¼ƒ¦Cˆ*ª/ðV×Ã-5¶J¦
como retornar em VB.NET o mesmo conteudo que eu consigo em VBA usando LINE INPUT?
desde já agradeço a atenção!
Depois do VB6 nunca mais usei Line input
no VB.net
num botão lê a primeira Linha:
[txt-color=#0000f0]Dim texto As New IO.StreamReader([Ô]C:\Diretorio\[Ô] & Arquivo)
msgbox( texto.ReadLine)[/txt-color]
para ler várias linhas faz um While
[txt-color=#e80000]Dim texto As New IO.StreamReader([Ô]C:\Diretorio\[Ô] & Arquivo)
While Not texto.EndOfStream
msgbox(texto.ReadLine)
End While
texto.Close()[/txt-color]
Convenhamos, muito mais simples que o Line Input
O ignorante também tem boas idéias, só que não chega perceber.
Autor desconhecido
para ler arquivos normais jah vou usar ele ! heheh
porem o arquivo que quero ler esta mais complexo
em VB.NET não aparece o texto fica apenas a inicial um texto ilegivel não é ascii
o arquivo não é txt por isso que complica...
alias não era pra complicar né... pois no VBA FUNCIONA
em VB.NET sai assim quando manda ler todo o arquivo
Citação:DMJJKKJJJJ[µ‰=žYÜÈÃÈ )C¸îT5ÃŒê}_s°‹šo ½-w‰=¦ÔÃ[ô]B<Pa‡—RM_ oêׄËyx ÂôÚaW†ú«MÅ’>ö''/ƒŽ™ú»#ø¦#¯½T7BäX±•E³Ã¡§ÃŒÅðÛÊì21¹|>ÛÂ2à ™â}±Õ)âß+[,ìƒiÂöÖéåĨ¥)ušëTå²Âˆ(féxz²XøÅ „dà ½ˆ7÷—åN4é²MU5mOdØøYE| 8m‰'µv2øz™îüðvüì|>Ö•…Œ}¹@jûÈËI£ ,Ú=¿k}Å’21Vãf%ý©å)icWBZî'[ÃÅ’cÛï±ÂúØ8Žcâ*qJùãqÂÃã|£&²òÙŒe›ãË®ûÃÂwßÄ?¶žwN.ö?Ü®Î@z²;ëP„•i.–Ó!vÃ'EÎÒæ7ìh×*¤3䘷RŽX«O;ëb*‚!K}7Ö¢·÷*Å jtÞ¤ò¿[ô]f
×'îp
“–üZ¿à ¶÷×|[ÆwÃ’:S—nÈl.jµ„*ûj9[ô]„V± ófpZiÂ7ÙwÞT.........................continua.........
Em VBA a parte é bem extensa não cabe aqui tudo, mas aparece o conteudo legivel ( apenas um pedaço que é legivel é esse q eu quero)
Citação:DMÀ={[Ô]championId[Ô] : 3,[Ô]dataVersion[Ô] : 0,[Ô]detail[Ô] : [ { [Ô]basePoints[Ô] : 0, [Ô]boostIpEarned[Ô] : 0.0, [Ô]boostXpEarned[Ô] : 0.0, [Ô]clientId[Ô] : [Ô]gn-202777288[Ô], [Ô]coOpVsAiMinutesLeftToday[Ô] : 180, [Ô]coOpVsAiMsecsUntilReset[Ô] : -1.0, [Ô]completionBonusPoints[Ô] : 0, [Ô]customMinutesLeftToday[Ô] : 102, [Ô]customMsecsUntilReset[Ô] : 76073034.0, [Ô]destination[Ô] : [Ô]messagingDestination[Ô], [Ô]difficulty[Ô] : [Ô]EASY[Ô], [Ô]elo[Ô] : 0, [Ô]eloChange[Ô] : 0, [Ô]experienceEarned[Ô] : 0.0, [Ô]experienceTotal[Ô] : 0.0, [Ô]firstWinBonus[Ô] : 0.0, [Ô]gameMode[Ô] : [Ô]CLASSIC[Ô], [Ô]gameid[Ô] : 30891.................continua..........
tentei diversas formas sem sucesso,
por isso estou tentando agora pegar o arquivo ler ele em hex e desse hex transformar em ascii e quando nao for mais ascii encerra a leiura, já vai virando uma POG ! ha HA ha HA ha HA ha
Funcionou em VBA o seguinte:
Sub LerVideo()
Dim iFF As Integer
Dim sLinha As String
iFF = FreeFile
Open [Ô]P:\Videos\308918063.mlr[Ô] For Input As iFF
Line Input #iFF, sLinha
Debug.Print sLinha
Close iFF
End Sub
O StreamReader provavelmente retorna este valor porque por padrão ele usa a codificação UTF8 a menos que você passe alguma outra codificação para ele.
Não sei como você estava abrindo o arquivo, que para suas futuras dúvidas eu recomendo que poste o código do que você fez junto com a dúvida e não só o resultado, mas se você criar o StreamReader mais ou menos assim
Dim meuReader As New System.IO.StreamReader(caminhoDoArquivo, System.Text.Encoding.Default)
Ele então vai usar a codificação padrão do Windows no idioma atual, que eu não tenho certeza mas acho que é o que o VB6/VBA faz
Sim ! eu havia testado esse e alguns outros listados no site http://msdn.microsoft.com/
e agora vc falando sobre o erro estar na codificação e do padrão streamreader ser UTF8
acabei lendo mais sobre ele e me encaminou mais pra frente !!! acho q esse é o rumo mesmo entao
acabei me deparando com Método Encoding.GetPreamble e Classe UnicodeEncoding e se vai a lista
estou lendo e continuo fuçando... como Byte Ordem Mark ( BOM ) achei o BOM quando vi EOF que mudava de codificaçà o pra codificaçà o e por ae to indo...
Eu nao consegui entender o seguinte ele esta em ANSI e o Default !? nao era pra eu precisar do BOM.... ele é ANSI entao era pra ler...
Já os encodings que usam um byte só costumam ter os caracteres mais comuns com o mesmo valor, só mudando o caso dos caracteres especÃficos de alguma lÃngua, como os com acento, como neste caso ele não parece ter nenhum destes caracteres, tendo apenas os que são em comum entre as duas codificações.
Já o BOM é mais para o caso de encodings multi-byte, porque digamos que cada caractere tenha 2 bytes, em um processador baseado na arquitetura x86 ele é interpretado da forma que o primeiro byte é mais significativo que o segundo então se você pegar em hexadecimal o valor 256 o valor vai estar em dois bytes na ordem 01 00, porém em processadores baseados na arquitetura do PowerPC (antigos Macs por exemplo) ele usa a ordem inversa, primeiro vem o byte menos significativo, então esse mesmo valor em memória ficaria ao contrário (00 01), e quando gravado em arquivo aconteceria o mesmo, então para poder ler um arquivo de texto que usa caracteres multi-byte primeiro eles gravam o BOM (byte order mark, ou marca de ordem dos bytes) assim o programa que lê o arquivo sabe como deve interpretar estes caracteres.
Só que o BOM é opcional, mesmo encodings que usam ele como o UTF-8 não é obrigatório ter ele
varios testes
>>>Imports System.IO
>>>Imports Microsoft.VisualBasic
>>>Imports System.Windows.Forms.Form
>>>Imports System.IO.TextReader
>>>Imports System.Text
>>>Imports System.IO.Stream
>>>Imports System.IO.File
Vish muitos F5 já ! ha HA ha HA
vou tentar mais ainda... hj a noite..
li nesse site aki http://www.cryptosys.net/pki/manpki/pki_stringstobytes.html
fala eu acho que uns 2 ou 3 padroes de codificação concernente....
é interessante pois dele virá mais testes ! hehehe
mas ainda sem entender do pq do bug no VBA de ler sem problemas e no .net ser complexo e mesmo estando aparentemente [Ô]correto[Ô] ele teima em nao funcionar como o esperado !
Esse arquivo é de onde? Parece ser alguma coisa de algum jogo, pelo pouco que da pra ver ele parece ter um cabeçalho de 8 bytes e o resto parece ser texto, e pelo formato parece ser JSON
Uma coisa também para se levar em consideração, strings são bem diferentes no .Net e no VB6/VBA, a forma como são representadas na memória e a forma como eles leem os arquivos, como esse arquivo não é exatamente texto talvez você tenha que reconsiderar a forma como está lendo o cabeçalho, talvez seja melhor ler de forma binária, talvez ler os primeiros 4, ou talvez os primeiros 8 se for o caso e usar o valor deles para saber se é mesmo o arquivo