AppletModule

05/12/2005

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

Respostas

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 Citar

06/12/2005

Renatacoimbra

Alguém pode me ajudar ?

...


Responder Citar

06/12/2005

Emerson

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 Citar

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 Citar

06/12/2005

Emerson

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 Citar

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&93; + Files&91;i&93;, fmCreate);
      try
        //Copiar arquivo para o local indicado
        Ffile.CopyFrom(Fres, Fres.Size);
      finally
        //Destruir objetos
        Fres.Free;
        Ffile.Free;
      end;
      
    end;
    
end;



Responder Citar

07/12/2005

Emerson

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 Citar

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 Citar