Claro, vamos lá:

para gravar as informações no arquivo que eu quero, estou usando um outro
programa. Não da pro executavel gravar as informações nele mesmo, ja que
está em uso. Portanto o meu programa de instalação é que está gravando.
Segue o processo pra gravação:

function GravarResourceInfo(const FileName, NomeRecurso, Texto: string):
boolean;
var hRes : THandle;
    cHD : String;
Begin
  cHD := AnsiUpperCase(Texto);
  hRes := BeginUpdateResource(pchar(FileName),False);
  if hRes <> 0 then
  begin
    result := true;
    UpdateResource(hRes,RT_RCDATA,pchar(AnsiUpperCase(NomeRecurso)), 0 ,
Pointer(cHD), StrLen(PCHAR(cHD)) + 1);
    If EndUpdateResource(hRes,False) then
      Result := true
    else
      Result := false;
  end
  else
    result := false;
end;

onde: FileName é o nome do arquivo que será atualizado.
         NomeRecurso é o nome que você irá dar para o recurso armazenado,
para poder ler a partir do aplicativo.
         Texto é o conteúdo que você quer gravar. Pode ser qualquer
informação.



Agora dentro do meu executavel de programa, vou ler o conteúdo gravado no
resource. Esta é a função:

function LerResourceInfo(NomeRecurso: string): string;
var ResData: HGLOBAL;
    ResInfo: HRSRC;
Begin
  Result := '';
  ResInfo := FindResource(hInstance, pchar(AnsiUpperCase(NomeRecurso)),
RT_RCDATA);
  if ResInfo <> 0 then
  begin
    ResData := LoadResource(hInstance, ResInfo);
    if ResData <> 0 then
    begin
      try
        Result := PChar(LockResource(ResData));
        UnlockResource(ResData);
      finally
        FreeResource(ResData);
      end;
    end;
  end;
end;


Funcionou muito bem.

O legal é que a partir daí vc pode inclusive criptografar o texto, para que
ninguem consiga ver o seu conteúdo com um editor de recursos (Ex: Resource
Explorer).

ps.: para testar se deu certo mesmo, é so abrir o seu programa alterado
neste editor de recursos e ir em RCData, que la vai estar o que vc acabou de
criar.


2009/11/26 José Henrique (Zote) <z...@bludata.com.br>

>
>
> Alemão, compartilha ai :D
> --
> José Henrique (Zote)
> Analista de TI
> Bludata Software
>
> 2009/11/26 Alemão <forumdel...@gmail.com <forumdelphi%40gmail.com>>
>
>
> >
> >
> > Consegui resolver o problema.
> >
> > Estou gravando varias informações criptografadas dentro do próprio
> > executável, no momento da instalação. Encontrei uma rotina na internet
> que
> > acrescenta informações na parte de resources dos programas.
> >
> > Ficou muito legal. No momento da instalação eu gravo essas informações
> > dentro de cada executavel e quando eles vão executar fazem a checagem das
> > informações. .
> >
> > Obrigado pelas sugestões de todos.
> >
> > 2009/11/25 berdam <berdamzi...@yahoo.com.br 
> > <berdamzinho%40yahoo.com.br><berdamzinho%
> 40yahoo.com.br>>
>
> >
> >
> > > configure iso numa tabela com parâmetros na base de dados
> > >
> > > Alemão escreveu:
> > > >
> > > > Como faço para gravar informações dentro de um executável ou dll ja
> > > > compilado? Pode a partir de outro executável.
> > > >
> > > > Como estou preocupado com copias de arquivos de meus sistemas para
> > serem
> > > > utilizados em outros sistemas / clientes, gostaria de gravar algumas
> > > > informações dentro destes executpaveis no momento da instalação, ou
> em
> > > > algum
> > > > outro momento. Ou seja, cada cliente ficaria com os arquivos com uma
> > > > informação diferente para que eu possa idenficar posteriormente caso
> > seja
> > > > preciso.
> > > >
> > > > O problema é que o arquivo já está compilado. A minha ideia é gravar
> > > > diretamente no executavel mesmo, sem nenhum arquivo adicional, tipo
> > > quando
> > > > você grava as informações de versão e empresa no programa, lá em
> > > > project ->
> > > > options -> Version info.
> > > >
> > > > Compilar uma versão diferente para cada cliente no momento do
> > > > lançamento da
> > > > versão não é uma opção, pois são muitos clientes.
> > > >
> > > > Alguem sabe alguma maneira de se fazer isso, ou ainda alguma outra
> > ideia
> > > > para esse controle que estou querendo implementar?
> > > >
> > > > Obrigado.
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > > >
> > >
> > >
> > >
> > > ------------------------------------
> > >
> > > --
> > > <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
> > >
> > >
> > >
> > >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    delphi-br-ow...@yahoogrupos.com.br
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    delphi-br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a