harbour, leer la variable como archivo

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
MarcosLMG
Usuário Nível 1
Usuário Nível 1
Mensagens: 7
Registrado em: 20 Mar 2015 20:39
Localização: URUGUAY

harbour, leer la variable como archivo

Mensagem por MarcosLMG »

Hola, tengo un problema, y no sé cómo solucionarlo, quiero leer un archivo y pasarlo a variable, y después leer la variable como archivo sin escribirlo en el disco, se puede hacer?
El programa espera leer por ejemplo “c:\imagenes\im.png” , pero yo quiero que lea directo de la variable (cvar) ¿SERA POSIBLE?
Gracias de antemano.


Código: Selecionar todos

procedure MAIN()

local FOTO := fopen("IM.png")
tam := fseek(FOTO,0,2)
fseek(FOTO,0,0)
cvar := space(tam)
fread(FOTO,@cvar,tam)

//-para prueba
FOTO := fcreate("prueba.png",0)
fwrite(FOTO,cvar,tam)
//-para prueba

fclose(FOTO)
inkey(0)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

harbour, leer la variable como archivo

Mensagem por asimoes »

Olá,

Pode fazer assim:

cTeste := hb_Memoread("IM.png")
hb_Memowrit("prueba.png", cTeste)
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

harbour, leer la variable como archivo

Mensagem por Toledo »

ou simplesmente...

Código: Selecionar todos

cFile:="IM.png"
cNewFile:="prueba.png"
COPY FILE (cFile) TO (cNewFile)
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

harbour, leer la variable como archivo

Mensagem por asimoes »

Ou

hb_Memowrit("prueba.png", hb_Memoread("IM.png"))
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
MarcosLMG
Usuário Nível 1
Usuário Nível 1
Mensagens: 7
Registrado em: 20 Mar 2015 20:39
Localização: URUGUAY

harbour, leer la variable como archivo

Mensagem por MarcosLMG »

Hola asimoes, gracias por su pronta respuesta.
Pero yo no quiero crear el archivo, quiero que solo se pueda leer.
Ejemplo que claro no funciona.

Código: Selecionar todos

cTeste := hb_Memoread("IM.png")
bitmap := _load_bitmap("prueba.png",cTeste)
/*Se puede escribir algo similar a eso?*/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

harbour, leer la variable como archivo

Mensagem por asimoes »

Olá se é para somente ler o arquivo, basta usar hb_memoread()
Ou você pode usar a lib freeimage

Para usar a lib freeimage tem que usar hbfimage.hbc e a dll FreeImage.dll tem que estar presente na pasta do executável.
Um exemplo:

Código: Selecionar todos

FI_Initialise()

im := fi_Load( FIF_PNG, "im.png", PNG_DEFAULT )

nW   := fi_GetWidth( im )

nH  := fi_getheight( im )

FI_DeInitialise()
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2822
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP
Curtiu: 2 vezes

harbour, leer la variable como archivo

Mensagem por Jairo Maia »

Olá Pessoal,

Será que o que ele quer não é exibir esse arquivo (figura)?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
MarcosLMG
Usuário Nível 1
Usuário Nível 1
Mensagens: 7
Registrado em: 20 Mar 2015 20:39
Localização: URUGUAY

harbour, leer la variable como archivo

Mensagem por MarcosLMG »

Hola, estoy usando HBDOS, compilado con DJGPP y librerías allegro.
El programa muestra imagen en pantalla asi _load_bitmap("prueba.png") //eso esta ok
-------------------------------------------------------------------------------------
Pero yo quiero que sea así, ejemplo

cTeste := hb_Memoread("prueba.png")
_load_bitmap (cTeste) // que muestre en pantalla la variable (cTeste).

Se puede leer la variable (cteste) como bitmap?
Gracias por su paciencia.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4666
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Curtiu: 1 vez
Contato:

harbour, leer la variable como archivo

Mensagem por rochinha »

Amiguinhos,

Pelo que entendi:
Hola, estoy usando HBDOS, compilado con DJGPP y librerías allegro.
El programa muestra imagen en pantalla asi _load_bitmap("prueba.png") //eso esta ok
A função _load_bitmap() recebe como parâmetro o nome do arquivo e não o conteúdo e então carrega a imagem.
La función _load_bitmap ( ) toma como parámetro un nombre de archivo y no el contenido y luego subir la imagen.
Pero yo quiero que sea así, ejemplo
cTeste := hb_Memoread("prueba.png")
_load_bitmap (cTeste) // que muestre en pantalla la variable (cTeste).
Mas aqui ele demonstra como deseja e desta forma não irá funcionar, pois o parâmetro da função é uma string com o nome e não uma string com conteúdo.
Pero aquí se demuestra cómo desea y por lo tanto no va a funcionar porque el parámetro de la función es una cadena con el nombre y no una cadena de contenido.

Vejam que eu não conheço estas funções nem suas bibliotecas mas ao ver da pra entender que o que ele deseja seja:
Usted ve que io no sabes estas funciones o sus bibliotecas, sino que ve el que entender que lo que quiere ser:

Código: Selecionar todos

cTeste := "prueba.png"
_load_bitmap( cTeste )
Não sei o intuito, mas imagino que ele esteja percorrendo um browse com nomes, e a cada nome seja apresentada sua imagem, como foto de empregados.
No sé el final , pero me imagino que él está caminando a través de un navegar nombres , y se muestra su imagen cada nombre como una foto de los empleados.

Resta saber se a função necessita de uma segunda função que faça um REFRESH ou limpe a área da foto anterior.
La cuestión es si la función requiere una segunda función que realiza una actualización o limpiar el área de la fotografía anterior.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
MarcosLMG
Usuário Nível 1
Usuário Nível 1
Mensagens: 7
Registrado em: 20 Mar 2015 20:39
Localização: URUGUAY

harbour, leer la variable como archivo

Mensagem por MarcosLMG »

Si entiendo.
Necesito una pista para que _load_bitmap tome el contenido de (cteste) como no nombre de archivo.
Gracias, Cualquier ayuda sirve :))
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4666
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Curtiu: 1 vez
Contato:

harbour, leer la variable como archivo

Mensagem por rochinha »

Amiguinhos,

Os bitmaps manipulados pela biblioteca precisam ter um certo numero de cores, as funções não irão carregar bitmaps com muitas cores:
Los mapas de bits que maneja la biblioteca deben tener un cierto número de colores , las funciones no cargar mapas de bits con muchos colores:

Código: Selecionar todos

  allegro_init()

  set_color_depth(16)

  bmp = create_bitmap(800,600)

  clear_bitmap(bmp)
  bmp := load_bitmap("imagem.bmp",NULL)

  destroy_bitmap(bmp)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 765
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

harbour, leer la variable como archivo

Mensagem por Nascimento »

eu conheço essa lib, foi feita a um tempo atraz acho que em 2007 para games é uma ponte da allegro para harbour
por isso é complicado ele ter exito em perguntas sobre ela pois é exclusiva , ja resolvi muitos problemas dela ctrl+alt+del
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

harbour, leer la variable como archivo

Mensagem por JoséQuintas »

A API do Windows, por exemplo, permite ler de arquivo em disco ou de conteúdo em memória.
Vai ter que pesquisar no seu uso, se existe função nessa biblioteca pra fazer o mesmo.

Não existe uma função pré-definida pra isso.
Cada uso/biblioteca/função pode querer a imagem num formato diferente.
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 765
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

harbour, leer la variable como archivo

Mensagem por Nascimento »

como falei acima é uma lib criada para fazer uma ponte entre a allegro para o harbour,
foi feita exclusivamente para games e pouquissimas pessoas conhece o seu uso...
é bem parecido com o allegro original mais com pequenas diferenças

Ex:

Código: Selecionar todos

request HB_GT_ALLEG_DEFAULT

npcx(0,600,"abre.dat",0)
 #ifdef DAT
         fundo=_get_from_dat(datafilehandle,get_dat_index("TELARM_PCX"))
         roleta=_get_from_dat(datafilehandle,get_dat_index("RM_PCX"))
         marca=_get_from_dat(datafilehandle,get_dat_index("RMPOLIG_PCX"))
         #else
         if file("telarm.png")
            fundo=_load_bitmap("telarm.png")
         else
            fundo=_load_bitmap("telarm.pcx")
         end if
#endif
entao veja que é bem diferente da allegro original, falo isso porque detenho tanto a lib quando os codigos fontes que fiz em .c

e sim o que ele quer é possivel , mais dando pequenos ajustes no fonte original e recompilando-o
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Responder