Arquivos de Recursos

Delphi

23/03/2005

pessoal criei o objeto:
ResStream : TResourceStream;
e agora utilizo seu seguinte constructor
TResourceStream.CreateFromID(HInstance, IdImagem, RT_RCDATA);
me digam qual é sua especificação realmente e em qual classe fica a constante RT_RCDATA?


Bruno Belchior

Bruno Belchior

Curtidas 0

Respostas

Massuda

Massuda

23/03/2005

Não sei se entendi direito sua dúvida, mas a constante RT_RCDATA está declarada na unit Windows.


GOSTEI 0
Bruno Belchior

Bruno Belchior

23/03/2005

Massuda minha dúvida tbm era essa mais tem mais alguma coisinha
o parâmetro do construtor IdImagem já sei que é o índice que a imagem foi inserida no .res e RT_RCDATE é um tipo genérico dos dados, porém o HInstance eu não compreendi ainda sua aplicação e outra coisa estou usando isso em uma classe que criei fora de meu formulário ou seja não tem a diretiva incluindo o arquivo de recursos na classe e sim no formulário que utilizara um objeto da mesma, será que funciona?


GOSTEI 0
Massuda

Massuda

23/03/2005

... o HInstance eu não compreendi ainda sua aplicação...
Além dos resources embutidos na sua aplicação, você pode ter DLLs externas contendo mais resources. No caso, o HInstance serve para saber se o resource que você quer acessar está no seu executável (nesse caso, o parâmetro HInstance é o valor dado pela variável global HInstance) ou está em alguma DLL (nesse caso HInstance é o valor retornado por LoadLibrary).

...estou usando isso em uma classe que criei fora de meu formulário ou seja não tem a diretiva incluindo o arquivo de recursos na classe...
Isso não é problema, desde que o resource que você quer acessar esteja embutido no seu executável.


GOSTEI 0
Bruno Belchior

Bruno Belchior

23/03/2005

quer dizer que [b:d58d167f3f]HInstance[/b:d58d167f3f] é justamente para fazer algo como estou tentando fazer (no caso extrair dados do .res sem estar na unit que ela foi inserida), me corrija se estiver errado mas a variável [b:d58d167f3f]HInstance [/b:d58d167f3f] é preenchida na hora que chamo [b:d58d167f3f]$R RECURSOS.RES[/b:d58d167f3f]?


GOSTEI 0
Massuda

Massuda

23/03/2005

...quer dizer que [b:8af96d2f51]HInstance[/b:8af96d2f51] é justamente para fazer algo como estou tentando fazer (no caso extrair dados do .res sem estar na unit que ela foi inserida),...
Se entendi o que você escreveu, a resposta seria ´mais ou menos´... Todos os $R do programa são tratados pelo Windows como uma coisa só (lembre-se que o Windows não faz a mínima idéia do que seja uma unit); dentro desse bloco único de resources do programa, o que faz diferença para o Windows é o tipo do resource e seu nome ou identificador.

...a variável [b:8af96d2f51]HInstance [/b:8af96d2f51] é preenchida na hora que chamo [b:8af96d2f51]$R RECURSOS.RES[/b:8af96d2f51]?
Não. HInstance é uma variável global do Delphi que é inicializada quando o programa é carregado.


GOSTEI 0
Rodc

Rodc

23/03/2005

Uma dúvida, tem como ´anexar´ um arquivo, por exemplo um HTML em um arquivo RES para não ter que distribuir dois arquivos ao cliente?


GOSTEI 0
Bruno Belchior

Bruno Belchior

23/03/2005

até onde sei sim... certa vez incluí numa DLL um .res e coloquei dentro dele vários JPG´s, (para diminuir o tamanho do executável final), sendo assim tenho quase convicção que é possível colocar todo tipo de arquivo usando o tipo de dado [b:267eecfd08]RT_RCDATA [/b:267eecfd08]...


GOSTEI 0
Massuda

Massuda

23/03/2005

...tem como ´anexar´ um arquivo, por exemplo um HTML em um arquivo RES para não ter que distribuir dois arquivos ao cliente?
Praticamente qualquer coisa pode ser embutida em um executável como sendo um resource.

Em particular, no caso de arquivos HTML, é interessante dar uma olhanda no artigo [url=http://delphi.about.com/od/internetintranet/l/aa061901a.htm]Web Site inside a Delphi EXE[/url] do site [url=http://delphi.about.com/]delphi.about.com[/url].


GOSTEI 0
Marcelo Saviski

Marcelo Saviski

23/03/2005

Um jeito mais prático de imbutir arquivos no executavel, é ir em Project>Resources e adicionar os Arquivos lá
Não sei se esse menu resources é nativo do Delphi ou de alguma coisa que eu instalei...


GOSTEI 0
POSTAR