DUVIDA TECNICA

DANLEONHART 05/01/2012 12:25:19
#392450
Dúvida técnica...

Seguinte, se faço este script, consigo ver o arquivo em forma binária, certo ?!

Dim b() As Byte
Dim fNum As Long

fNum = FreeFile

Open [Ô]C:\Arquivo.docx[Ô] For Binary Access Read As #fNum

ReDim b(1 To LOF(fNum))

Get fNum, , b()

Close fNum


E com isso consigo enxergo em um TextBox toda a numeração dele:


Dim t As String
Dim res As Long

For n = LBound(b) To UBound(b)
DoEvents
t = t & b(n) & [Ô] [Ô]
res = res + 1
LbCont.Caption = Format(res, [Ô]###,##0[Ô]) [ô] <= Só para ver a quantidade...
Next n

txtRes.Text = t


Minha pergunta é:
Toda essa numeração retornada quando eu subdividi o array é em que formato ???
se eu fizer a inversão ([txt-color=#0000f0]Open ... For Binary Access Writer As # [/txt-color]) consigo recuperar o arquivo ?

Por favor, não é nenhum projeto...apenas estou querendo entender melhor o sistema binário e a forma correta de usar a instrução [Ô][txt-color=#0000f0]Open[/txt-color][Ô] e suas funções [Ô][txt-color=#0000f0]Get[/txt-color] & [txt-color=#0000f0]Input[/txt-color][Ô].
KERPLUNK 05/01/2012 14:26:02
#392462
Resposta escolhida
Se são só números que vai gravar no arquivo, não precisa ser binário, pode ser texto.
Mas respondendo sua pergunta:
Open xxx for binary access write as #x = essa instrução vai abrir o arquivo em modo de gravação.

Sempre que for gravar dados em um arquivo que não são binários, o melhor é usar a instrução [Ô]Print[Ô] para gravar e [Ô]Line Input[Ô] para buscar dados:
open [Ô]c:\pasta\arquivo.txt[Ô] for output as #1 [ô]Abre ou cria o arquivo
print #1, [Ô]Algum valor[Ô] [ô]Aqui, pode ser algo como Textbox1.Text, desde que seja dados texto mesmo, isso inclui números e datas
Close #1 [ô]Grava os valores e fecha o arquivo

Para ler:
Open [Ô]C:\pasta\arquivo.txt[Ô] for input as #1 [ô]Abre o arquivo, note que no modo INPUT, o arquivo deve existir, senão vc vai ter um erro
dim dados as string [ô]instanciando uma variável para receber os dados
Line Input #1, dados [ô]buscando o conteúdo DA PRIMEIRA LINHA do arquivo texto e colocando na variável criada acima
Close #1 [ô]Fecha o arquivo

Para ler múltiplas linhas:
Open [Ô]C:\pasta\arquivo.txt[Ô] for input as #1 [ô]Abre o arquivo, note que no modo INPUT, o arquivo deve existir, senão vc vai ter um erro
dim dados as string [ô]instanciando uma variável para receber os dados
dim tudo as string
do while not eof(1) [ô]fazer o loop até o fim do arquivo
Line Input #1, dados [ô]buscando o conteúdo DA LINHA ATUAL do arquivo texto e colocando na variável criada acima
tudo = tudo & dados & vbNewLine [ô]Concatenando na variável [Ô]tudo[Ô] e adicionando um caracter de nova linha
loop
Close #1
textbox1.text = tudo [ô]colocando o valor de [Ô]tudo[Ô] em uma textbox, que deverá ser multilinhas para não mostrar tudo [Ô]amontoado[Ô]

Close #1 [ô]Fecha o arquivo


DANLEONHART 05/01/2012 18:09:10
#392495
Valeu pela aula KERPLUNK

Gostei mesmo !

No código que postei acima, é como eu disse, é só para melhorar meu uso em relação ao Open e derivados...
pois o arquivo que estou a [Ô]abrir[Ô] e [Ô]ler[Ô] é um arquivo [Ô]jpg[Ô], e também fiz testes com [Ô]mp3[Ô].

Como eu disse, depois de aberto, faço um For Each para ver tudo que tem...e tenho de retorno vários números fora de sequência (tipo: [txt-color=#0000f0]78 23 102 44 02...[/txt-color])
então, só quero saber se isso são os dados binários do arquivo .

VALEU !
KERPLUNK 05/01/2012 23:24:29
#392516
Talvez sejam dados binários, difícil dizer...
DANLEONHART 06/01/2012 00:09:22
#392518
Lendo alguns fóruns dá para entender que é...vou fazer o teste pegando um desses números e convertendo para Decimal...
Agora o que não consegui foi deixar o valor binário suspenso em uma variável temporária (Run Time), e depois recuperá-lo sem precisar usar o disco...porque sempre que usamos o Open ... For...#... ele precisa de um diretório quero fazer com uma variável .
KERPLUNK 06/01/2012 08:45:11
#392527
Em um módulo, crie uma variável pública e ao iniciar leia os dados do arquivo e coloque nessa variável pública, ela vai estar disponível durante toda a execução do seu programa.
Apesar de eu achar que isso já é assunto para outro tópico...
DANLEONHART 06/01/2012 11:05:19
#392544
OK ! vou abrir outro tópico então...ou melhor, reabrir pois lembro que abri um semana passada e encerrei...
Tópico encerrado , respostas não são mais permitidas