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: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

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: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
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: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
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: 763
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: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, 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: 763
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