Listar Resources? Alguém Sabe?

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

Moderador: Moderadores

Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Listar Resources? Alguém Sabe?

Mensagem por fladimir »

Olá pessoal...

Existe alguma função que traga a lista de Resources... exemplo no ADVPL da TOTVS eles tem uma função pelo q vi chamada GetArrayRes q traz a lista de resorces em um array... queria algo semelhante.

[]'s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Listar Resources? Alguém Sabe?

Mensagem por asimoes »

Directory() não resolve?
►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
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Listar Resources? Alguém Sabe?

Mensagem por fladimir »

Não seriam os arquivos RC e sim o q é incorporado no EXE...

Explico...

antes meus relatórios FR3 (fastreport) eram arquivos externos soltos na pasta Relatórios... agora todos eles estão incorporados ao EXE, ou seja, não precisa mais enviar os FR3 junto nem se alguém apagar o sistema ter q baixar pra rodar o relatório pois fazem parte do EXE.

Ok até ai tudo certo.

Porém quero deixar de uma forma q se em determinado cliente precisar ter um relatório PERSONALIZADO então vai em determinada opção no sistema chamada Editar Relatórios do Sistema e aparece uma LISTA de tais relatórios, esta LISTA pra eu não ter q toda vez q criar um relatório e mencionar no arquivo RC ter q adicionar ao ARRAY manualmente gostaria, se tiver como, através de uma função listar todos os Recursos q estão incorporados no sistema...

Hoje esta assim:

Conteúdo do arquivo Sistema.RC (compilado e incorporado ao EXE)

Código: Selecionar todos

relContrato     RCDATA    "D:\Projetos\Sistema\Relatorios\Contrato.FR3"
relEstoque       RCDATA    "D:\Projetos\Sistema\Relatorios\Estoque.FR3"
Ai qdo vou no sistema em Editar Relatórios crio um Menu Achoice a partir de um Array com o nome dos relatórios assim:

Código: Selecionar todos

aRelatorios := { "relContrato", "relEstoque" }
Ai o usuário escolhe o relatório e eu eu abro no Fast o relatório em modo Design pra poder Alterar e Salvar como o mesmo nome exemplo relContrato.FR3 (relatório a partir do Resource alterado e salvo na pasta do sistema)

Este procedimento será feito pela área técnica pra evitar de usuários ficarem modificando sem conhecimento.

Ai na parte q carrega os relatórios ficaria assim...

Código: Selecionar todos

...
CarregaRelatorio("relContrato")
...

function CarregaRelatorio( cNomeRelatorio )
   *-- Verifica se existe arquivo de relatório personalizado, caso não carrega do Resource.
   if file( cNomeRelatorio + '.FR3)
       oFR:LoadFromFile( cNomeRelatorio+'.FR3') 
   else
      oFR:LoadFromResource(cNomeRelatorio)
   endif
return nil
Tudo isto já funciona, porém se tivesse como listar os relatórios contidos no EXE através do Resource, evitaria falha de eu incorporar um relatório e esquecer de alterar a rotina de personalização.

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Listar Resources? Alguém Sabe?

Mensagem por asimoes »

Fladimir,

Entendi agora.

Achei esse cara Resource Viewer
http://www.heaventools.com/rt-tour-resource-viewer.htm

Não sei se vai te atender.
►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
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Listar Resources? Alguém Sabe?

Mensagem por fladimir »

Obrigado Alexandre, mas esse aplicativo seria pra visualizar os resources de fora, o q eu gostaria era q meu sistema visualizasse os resources exitentes e tratasse isso filtrando os q são relatorios FR3 pra montar um menu pra poder editar de forma automática, hj monto isso manualmente.

Pesquisei e em FiveWin tem uma função em C chamada GetResources() q teria esta informação...

Mas blz... vamos continuando, caso eu consiga migrar esta função para o Harbour posto aki.

Mais uma vez agradeço a força.

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Listar Resources? Alguém Sabe?

Mensagem por asimoes »

Fladimir,

Estou procurando no google, eu acho interessante obter essa informação.

Achei isso:

http://www.codeproject.com/Articles/422 ... -resources

A minha busca está indo nessa linha:

extract Resource from executable c++

Provavelmente você terá que achar um código em C ou C++ e portar para uma função harbour.

Tamu junto!
►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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Listar Resources? Alguém Sabe?

Mensagem por asimoes »

Achei um que extrai todos os resources do .exe, sei que não é isso que você quer, mas pode ser útil, é free

https://sourceforge.net/projects/resourcextract/files/
►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)
wmanesco
Usuário Nível 3
Usuário Nível 3
Mensagens: 116
Registrado em: 09 Set 2016 13:18
Localização: ITAJAI - SC

Listar Resources? Alguém Sabe?

Mensagem por wmanesco »

Não sei se eu entendi direito, desculpe caso não tenha entendido.

Não teria como você ler os RCs e procurar por exemplo por "RCDATA" e ir pegando os nomes dos recursos?
William Manesco
Harbour 3.x | Fivewin | BCC | MySQL (TDolphin) | HBQT | HBIDE | Atom
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Listar Resources? Alguém Sabe?

Mensagem por fladimir »

É por ai mesmo Alexandre... vou ver se consigo algo

Willian, não poderia pq os RC não vão pro cliente
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Listar Resources? Alguém Sabe?

Mensagem por JoséQuintas »

Estou estranhando....

Você mesmo digita o nome no RC, antes de compilar.
E você quer uma lista do que você mesmo digita?
Não seria só digitar o mesmo nome no RC e no PRG?
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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Listar Resources? Alguém Sabe?

Mensagem por JoséQuintas »

o que o wmanesco escreveu está correto.
Se for o caso, você pode criar uma rotina, pra ser executada ANTES da compilação, que cria o PRG pra você a partir do arquivo RC.
Executaria a rotina antes de fazer a compilação, e já compilaria o PRG contendo a lista de resource.
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Listar Resources? Alguém Sabe?

Mensagem por asimoes »

Fladimir,

Você pode incluir no .rc o próprio .rc como texto e depois acessar/listar.
►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
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Listar Resources? Alguém Sabe?

Mensagem por fladimir »

Verdade pessoal...

Vou tentar aki obrigado
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Listar Resources? Alguém Sabe?

Mensagem por asimoes »

No arquivo seu.rc

FileRC TXT SEU.RC

Para ler:

Código: Selecionar todos

cDataRC   := Hb_LoadResourceRawFile ( "FileRC", "TXT"  )

#pragma BEGINDUMP
#include <Windows.h>
#include <hbApi.h>

//        HMG_LoadResourceRawFile ( cFileName, cTypeResource | nTypeResourceID )
HB_FUNC ( HB_LOADRESOURCERAWFILE )
{
   HRSRC   hResourceData;
   HGLOBAL hGlobalResource;
   LPVOID  lpGlobalResource = NULL;
   DWORD   nFileSize;
   TCHAR   *FileName     = (TCHAR*) hb_parc(1);
   TCHAR   *TypeResource = HB_ISCHAR (2) ? (TCHAR*) hb_parc(2) : MAKEINTRESOURCE ( hb_parni(2) );

   hResourceData = FindResource ( NULL, FileName, TypeResource );
   if ( hResourceData != NULL )
   {
       hGlobalResource = LoadResource ( NULL, hResourceData );
       if ( hGlobalResource != NULL )
       {
           lpGlobalResource = LockResource ( hGlobalResource );
           if ( lpGlobalResource != NULL ) 
           {
               nFileSize = SizeofResource ( NULL, hResourceData );
               hb_retclen ( (const CHAR *) lpGlobalResource, (HB_SIZE) nFileSize );
           }
           FreeResource ( hGlobalResource );
       }
   }

   if ( lpGlobalResource == NULL )
        hb_retclen ( (const CHAR *) NULL, (HB_SIZE) 0 );
}

#pragma ENDDUMP
►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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Listar Resources? Alguém Sabe?

Mensagem por JoséQuintas »

Quais as opções de executar esses relatórios?
Faça um teste com o resource universal.
Uso pra algumas coisas.
Assim o resource fica embutido dentro de um PRG.

Código: Selecionar todos

FUNCTION JPEGBancoItau()

   #pragma __binarystreaminclude "image\banco341.jpg" | RETURN %s

FUNCTION JPEGBancoBradesco()

   #pragma __binarystreaminclude "image\banco237.jpg" | RETURN %s

FUNCTION JPEGNatal()

   #pragma __binarystreaminclude "image\natal.jpg"    | RETURN %s

FUNCTION JPEGAnoNovo()

   #pragma __binarystreaminclude "image\anonovo.jpg"  | RETURN %s
Pra ilustrar o retorno em run-time:

Código: Selecionar todos

hb_MemoWrit( "itau.jpg", JPEGBancoItau() )
A partir daí, é verificar na rotina que vai usar o relatório qual a melhor forma de usar.
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/
Responder