Página 1 de 1

harbour, leer la variable como archivo

Enviado: 03 Mar 2016 19:19
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)

harbour, leer la variable como archivo

Enviado: 03 Mar 2016 20:08
por asimoes
Olá,

Pode fazer assim:

cTeste := hb_Memoread("IM.png")
hb_Memowrit("prueba.png", cTeste)

harbour, leer la variable como archivo

Enviado: 03 Mar 2016 20:29
por Toledo
ou simplesmente...

Código: Selecionar todos

cFile:="IM.png"
cNewFile:="prueba.png"
COPY FILE (cFile) TO (cNewFile)
Abraços,

harbour, leer la variable como archivo

Enviado: 03 Mar 2016 20:57
por asimoes
Ou

hb_Memowrit("prueba.png", hb_Memoread("IM.png"))

harbour, leer la variable como archivo

Enviado: 04 Mar 2016 10:18
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?*/

harbour, leer la variable como archivo

Enviado: 04 Mar 2016 15:56
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, leer la variable como archivo

Enviado: 04 Mar 2016 16:03
por Jairo Maia
Olá Pessoal,

Será que o que ele quer não é exibir esse arquivo (figura)?

harbour, leer la variable como archivo

Enviado: 04 Mar 2016 17:03
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.

harbour, leer la variable como archivo

Enviado: 04 Mar 2016 18:16
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.

harbour, leer la variable como archivo

Enviado: 04 Mar 2016 18:49
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 :))

harbour, leer la variable como archivo

Enviado: 04 Mar 2016 19:51
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)

harbour, leer la variable como archivo

Enviado: 05 Mar 2016 00:48
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

harbour, leer la variable como archivo

Enviado: 07 Mar 2016 19:58
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.

harbour, leer la variable como archivo

Enviado: 07 Mar 2016 21:39
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