ALOCAR ARQUIVO BINARIO EM UMA VARIAVEL
Seguinte...
Uso o script a seguir para salvar no disco um arquivo que está em binário:
Quero saber se é possÃvel aloca-lo em uma variavel, ao invés de salvar no disco...
tipo assim
Gostaria de tirar mais essa dúvida com os mais experientes
Uso o script a seguir para salvar no disco um arquivo que está em binário:
Open [Ô]C:\Meu Arquivo.mp4[Ô] For Binary Access Write As #fileNum
Quero saber se é possÃvel aloca-lo em uma variavel, ao invés de salvar no disco...
tipo assim
Dim vArq
Open vArq For Binary Access Write As #fileNum
Gostaria de tirar mais essa dúvida com os mais experientes
Se vc se refere apenas ao caminho do arquivo:
Dim vArq
vArq = [Ô]C:\pasta\arquivo.mp4[Ô]
Open vArq For Binary Access Write As #fileNum
Se vc se refere ao CONTEÚDO do arquivo em uma variável:
Dim vArq
vArq = [Ô]C:\pasta\arquivo.mp4[Ô]
Open vArq For Binary As #fileNum
Dim aS As String
aS = Space(LOF(fileNum))
Get fileNum, , aS
Close fileNum
Dim vArq
vArq = [Ô]C:\pasta\arquivo.mp4[Ô]
Open vArq For Binary Access Write As #fileNum
Se vc se refere ao CONTEÚDO do arquivo em uma variável:
Dim vArq
vArq = [Ô]C:\pasta\arquivo.mp4[Ô]
Open vArq For Binary As #fileNum
Dim aS As String
aS = Space(LOF(fileNum))
Get fileNum, , aS
Close fileNum
OK KERPLUNK
é a segunda opção mesmo...
só me diz...
então o arquivo está alocado na variável vArq ???
se eu pegar essa variavel e colocar (por exemplo) para o componente do WMP executar, ele vai executar ?
porque eu pego o arquivo (independente do formato) e passo para binario assim:
ou seja, ele está na variável [Ô]fileNum[Ô] na forma de Bytes...
agora quero pegá-lo dessa variável, sem precisar salvar em disco, e converte-la de volta para seu formato de origem...entendes ?
é a segunda opção mesmo...
só me diz...
então o arquivo está alocado na variável vArq ???
se eu pegar essa variavel e colocar (por exemplo) para o componente do WMP executar, ele vai executar ?
porque eu pego o arquivo (independente do formato) e passo para binario assim:
fileNum = FreeFile
Open [Ô]C:\Foto.jpg[Ô] For Binary Access Read As #fileNum
ReDim b(1 To LOF(fileNum))
Get fileNum, , b()
Close fileNum
ou seja, ele está na variável [Ô]fileNum[Ô] na forma de Bytes...
agora quero pegá-lo dessa variável, sem precisar salvar em disco, e converte-la de volta para seu formato de origem...entendes ?
Pode tambem usar a seguinte sintaxe:
dim conteudo as string
dim ArqFree as integer
ArqFree = FreeFile
Open sFile For Input As #ArqFree
Conteudo = Input(LOF(ArqFree), #ArqFree)
Close #ArqFree
dim conteudo as string
dim ArqFree as integer
ArqFree = FreeFile
Open sFile For Input As #ArqFree
Conteudo = Input(LOF(ArqFree), #ArqFree)
Close #ArqFree
Citação:então o arquivo está alocado na variável vArq ???
Exatamente
Citação:se eu pegar essa variavel e colocar (por exemplo) para o componente do WMP executar, ele vai executar ?
Ora, experimente e veja o que acontece. Eu nunca precisei fazer isso, mas acho que funciona sim...
Seguinte...
Para não ter que colocar um componente WMP, resolvi usar um arquivo de imagem como teste...
Então (se eu estiver errado me corrijam), declarei no General Declarations assim:
Para que as variáveis sejam válidas em todo o Form...
passo a imagem para binário assim:
Creio que na variável [Ô]fileNum[Ô] está o arquivo em binário...
se em tempo de execução eu quiser recuperar este arquivo de binário para o formato imagem
não apenas para fazer assim ?
Pessoal, me mostrem onde estou errando !
KERPLUNK : Fiz como você falou, e de todo jeito o arquivo é carregado no disco.
Para não ter que colocar um componente WMP, resolvi usar um arquivo de imagem como teste...
Então (se eu estiver errado me corrijam), declarei no General Declarations assim:
Option Explicit
Dim b() As Byte
Public fileNum As Long
Para que as variáveis sejam válidas em todo o Form...
passo a imagem para binário assim:
Sub Para_Bytes()
fileNum = FreeFile
Open [Ô]C:\Foto.jpg[Ô] For Binary Access Read As #fileNum
ReDim b(1 To LOF(fileNum))
Get fileNum, , b()
Close fileNum
End Sub
Creio que na variável [Ô]fileNum[Ô] está o arquivo em binário...
se em tempo de execução eu quiser recuperar este arquivo de binário para o formato imagem
não apenas para fazer assim ?
Sub D_Bytes()
Dim Conteudo As String
Dim ArqFree As Integer
Dim vImage As IPictureDisp
ArqFree = FreeFile
Open fileNum For Input As #ArqFree
Conteudo = Input(LOF(ArqFree), ArqFree)
Close #ArqFree
Set vImage = LoadPicture(Conteudo)
Ima1.Picture = vImage
End Sub
Pessoal, me mostrem onde estou errando !
KERPLUNK : Fiz como você falou, e de todo jeito o arquivo é carregado no disco.
No caso do Loadpicture, não. Loadpicture, requer como parâmetro um arquivo fÃsico e não um buffer.
é possÃvel converter a leitura do binário em uma picture mas qual o objetivo disso? Você pode simplesmente fazer:
Ima1.Picture = LoadPicture([Ô]C:\pasta\arquiv.jpg[Ô])
é possÃvel converter a leitura do binário em uma picture mas qual o objetivo disso? Você pode simplesmente fazer:
Ima1.Picture = LoadPicture([Ô]C:\pasta\arquiv.jpg[Ô])
Só estudo mesmo
Eu já suspeitava que não iria funcionar...pois é preciso um arquivo no disco...
Eu já suspeitava que não iria funcionar...pois é preciso um arquivo no disco...
Reabrindo o tópico...
Quero colocar o arquivo que está em forma de Bytes de volta ao seu formato de origem (uma imagem), só que sem precisar colocá-lo no disco...pois se utilizo o [Ô]Open ... For Binary[Ô]
ele acaba alocando o arquivo no disco...tem como fazer isso sem alocar no disco ? e sim em uma variável ?!
para passar para o formato de imagem basta instanciar a variável como [Ô][txt-color=#0000f0]IPictureDisp[/txt-color][Ô]
Quero colocar o arquivo que está em forma de Bytes de volta ao seu formato de origem (uma imagem), só que sem precisar colocá-lo no disco...pois se utilizo o [Ô]Open ... For Binary[Ô]
ele acaba alocando o arquivo no disco...tem como fazer isso sem alocar no disco ? e sim em uma variável ?!
para passar para o formato de imagem basta instanciar a variável como [Ô][txt-color=#0000f0]IPictureDisp[/txt-color][Ô]
Deixa ver se entendi, vc quer gravar um arquivo, sem que seja no disco?? Pelo que entendi, vc lê um arquivo de imagem, aloca o conteúdo, e quere regravar esse mesmo conteúdo, é isso? Não to entendendo o que vc quer fazer. Parece que quer fazer um novo formato...
Não, não...
Apenas fazer o inverso da primeira ação...com o detalhe de que [Ô]não[Ô] quero utilizar o Disco para alocar o arquivo, e sim uma variável...
ou seja, na primeira ação eu passo de imagem para Bytes (imagem que estava no Disco);
agora eu quero passar de Bytes para imagem novamente...sem utilizar o disco...entendes ?!
Apenas fazer o inverso da primeira ação...com o detalhe de que [Ô]não[Ô] quero utilizar o Disco para alocar o arquivo, e sim uma variável...
ou seja, na primeira ação eu passo de imagem para Bytes (imagem que estava no Disco);
agora eu quero passar de Bytes para imagem novamente...sem utilizar o disco...entendes ?!
Tópico encerrado , respostas não são mais permitidas