AppletModule

05/12/2005

0

Olá Pessoal !

é possivel usar um arquivo recursos.res dentro de um AppletModule

implementation

{$R *.dfm}
{$R \Resource\Resource.res}



sempre fala q não achou o arquivo de recurso quando tento usa-lo.

Obrigada.[/code]


Renatacoimbra

Renatacoimbra

Responder

Posts

05/12/2005

Renatacoimbra

Só pra constar:

dentro do meu arquivo de recursos tem essa linha:

Recurso1 RCDATA configBD.exe

quando tento extrair o arquivo fala q não encontrou o recurso1


Responder

06/12/2005

Renatacoimbra

Alguém pode me ajudar ?

...


Responder

06/12/2005

Emerson Nascimento

dentro do seu arquivo de recursos não pode haver a linha
Recurso1 RCDATA configBD.exe
o arquivo de recursos é um arquivo compilado!

faça assim:
crie um arquivo chamado Resource.RC e ponha essa sua linha nele.

depois compile seu arquivo com a seguinte linha de comando no prompt:
brcc32 Resource.RC
(brcc32 está na pasta ¬DELPHI¬\Bin)

depois de executar essa linha será gerado o arquivo Resource.res.


Responder

06/12/2005

Renatacoimbra

Obrigada emerson.en pela atenção

sim a linha citada está dentro do Resource.RC depois compilei e gerou o .res


Linha dentro do Resource.RC:
[color=red:ae8b59a322]Recurso1 RCDATA configBD.exe[/color:ae8b59a322]

mais quando tento extrair o arquivo de dentro do .res fala q não encontrou o
Recurso1


Responder

06/12/2005

Emerson Nascimento

publique aqui o código de extração que você utilizou...

um exemplo seria:
Procedure SaveConfigDB;
var
  PathToSave : String;
  Res : TResourceStream;
begin
  PathToSave := ExtractFilePath(Application.ExeName)+´\ConfigDB.exe´;
  if not FileExists(PathToSave) then
  begin
    Res := TResourceStream.Create(Hinstance, ´Recurso1´, ´RCDATA´);
    try
      Res.SavetoFile(PathToSave);
    finally
      Res.Free;
    end;
  end;
end;



Responder

06/12/2005

Renatacoimbra

Está dentro de um for porque tem mais de um arquivo.

// Extrair arquivos de configuracao
procedure InstalarArquivos;
var
  i: integer;
  Fres: TResourceStream;
  fFile: TFileStream;
begin

    //Setar Path e nome dos arquivos de destino
    SetPathFiles;
    for i := 0 to Files.Count - 1 do begin
      //Extrair arquivo do Resource
      Fres := TResourceStream.Create(0, ´RECURSO´ + IntToStr(i + 1), RT_RCDATA);
      fFile := TFileStream.Create(Paths[i] + Files[i], fmCreate);
      try
        //Copiar arquivo para o local indicado
        Ffile.CopyFrom(Fres, Fres.Size);
      finally
        //Destruir objetos
        Fres.Free;
        Ffile.Free;
      end;
      
    end;
    
end;



Responder

07/12/2005

Emerson Nascimento

talvez porque a função seja case sensitive. tente colocar da mesma forma que você escreveu no arquivo .RC

TResourceStream.Create(0, ´Recurso´ + IntToStr(i+1), ´RCDATA´)

uma outra coisa: porque RT_RCDATA? no arquivo você colocou somente RCDATA, não foi?


Responder

07/12/2005

Renatacoimbra

emerson.en eu acho q o problema não é o RT_RCDATA, com ele tb funciona,

será se não é porque esse aplicativo é um CPL

{$E cpl}

é uma DLL daquelas q ficam no Painel de Controle do Windows?

testei essa mesma rotina com um aplicativo EXE normal e funciona certinho.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar