Página 1 de 1

Aquisição de arquivo JPG em arquivo .RC

Enviado: 11 Jun 2025 10:53
por Mario Mesquita
Bom dia, pessoal.

Estou tentando resolver uma coisa sem sucesso até agora: Eu tenho umas imagens no arquivo de recursos (.RC) da HMG. Nos objetos, como Image, vc pode pega-los via programa. Também os uso na MiniPrint, para imprimir em formulários.

Meu problema é que estou modelando um PDF usando aquela lib HPDF. Aparentemente na proprieddade Picture não pega a imagem declarando o nome dela no arquivo .RC. Nos exemplos da HMG só tem referência direta, tipo "MeuJPG.jpg".

Então estou tentando achar alguma função que adquira a imagem para tentar botar na Picture por variável. Tentei algumas mas não consegui até agora. Já tentei até pela IA mas ela sugere funções que o compilador não reconhece, deve ser de algum fork.

Se alguém já teve essa experiência e puder compartilhar, agradeço.

Saudações,
Mario.

Aquisição de arquivo JPG em arquivo .RC

Enviado: 11 Jun 2025 11:05
por JoséQuintas
Atenção que na harupdf tem função diferente pra arquivo físico ou da memória.

Uso resource em RC, em MySQL e também no programa.
Depende da finalidade de uso, e da necessidade de existência.

Código: Selecionar todos

/*
ZE_RESOURCE - RESOURCES
2016.05.20 - José Quintas
*/

#include "josequintas.ch"

FUNCTION ze_LoadBinary( cFileName )

   LOCAL cTxt

   cFileName := Lower( cFileName )
   DO CASE
   CASE cFileName == "jpsenha.sql"; #pragma __binarystreaminclude "sql\table\jpsenha.sql" | RETURN %s
   CASE cFileName == "jpbinary.sql"; #pragma __binarystreaminclude "sql\table\jpbinary.sql" | RETURN %s
   CASE cFileName == "jpconfi.sql"; #pragma __binarystreaminclude "sql\table\jpconfi.sql" | RETURN %s
   CASE cFileName == "jpreguso.sql"; #pragma __binarystreaminclude "sql\table\jpreguso.sql" | RETURN %s
   OTHERWISE
      cTxt := ze_binaryFromSQL( cFileName )
   ENDCASE

   RETURN cTxt
Exemplos do meu uso:

- ícones das telas, em resource, o programa precisa funcionar mesmo não existindo MySQL

- arquivos básicos do SQL, pra criar os arquivos básicos do SQL precisam existir no programa, uso esse pragma

- Outros arquivos e imagens, salvo no MySQL, incluindo arquivos pra harupdf.

O pragma, na hora da compilação, acrescenta o arquivo físico como parte do EXE.

Deixo tudo num único PRG, assim dá pra olhar o tamanho ocupado por resource.
Se ficar espalhando pragma pelos fontes, pode acabar colocando arquivo repetido, e gastando espaço à toa.
Deixando tudo junto, pode decidir depois quais pode salvar em MySQL ou outra alternativa.

Aquisição de arquivo JPG em arquivo .RC

Enviado: 11 Jun 2025 11:18
por JoséQuintas
resource.png
Só pra lembrar:
A compilação do harbour transforma em fonte C, e depois o fonte C é compilado gerando o objeto (.o em mingw)
Não tem limite, mas pra que ficar aumentando o tamanho do EXE com coisas que pode baixar depois.