ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Ajuda DLL Include (Array of Byte)

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
mikenewell
Novato
Novato


Registrado: Segunda-Feira, 27 de Janeiro de 2014
Mensagens: 6

MensagemEnviada: Seg Jan 27, 2014 7:46 pm    Assunto: Ajuda DLL Include (Array of Byte) Responder com Citação

Eu estou tentando fazer uma dll transformar em array of byte para eu utilizar como arquivo (*.inc)

alguem tem ideia de como fazer isso??


Exemplo:

Abrindo a dll em hexa decimal temos o hexadecimal dela:

4D5A900003000000.....

transformando ela em inc ficaria assim:

dll: array[0..823295] of Byte = (
$4D,$5A,$9,$0,$0,$0,$0,$3,$0,$0,$0,$0,$0,$0.....
........


alguem sabe como converter uma dll para .inc ???
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Qua Jan 29, 2014 11:34 am    Assunto: Responder com Citação

Fiquei curioso em saber para quer kkkkkkk.

Ai estar a rotina

Código:

var
  buff: array [0 .. 1024 * 1024 * 50] of byte; // 50mb de tamanho deve servir para dll

procedure dll2inc(dllname, incname: string);
var
  INFile: file of byte;
  OUTFile: tstrings;
  I, len: longint;
  lin: string;
begin
  OUTFile := tstringlist.Create;
  AssignFile(INFile, dllname);
  Reset(INFile);
  len := filesize(INFile);
  OUTFile.Add('var dll:array[1..' + inttostr(len) + '] of byte=(');
  BlockRead(INFile, buff, len); // ler o arquivo de uma só vez
  lin := '';
  for I := 0 to len - 1 do
  begin
    lin := lin + '$' + inttohex(buff[I], 2) + ',';
    if length(lin) = 24 * 4 then
    begin
      OUTFile.Add(lin);
      lin := '';
    end;
  end;
  CloseFile(INFile);
  if lin <> '' then
    OUTFile.Add(lin);
  lin := OUTFile.Strings[OUTFile.Count - 1];
  lin := copy(lin, 1, length(lin) - 1) + ');';
  OUTFile.Strings[OUTFile.Count - 1] := lin;
  OUTFile.SaveToFile(incname);
  OUTFile.Free;
end;



Dos exemplos de uso

Código:

procedure TForm2.Button1Click(Sender: TObject);
begin
  dll2inc('C:\Users\Strak\Desktop\delphi inc\zlib.dll',
    'C:\Users\Strak\Desktop\delphi inc\zlib.inc');
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Qua Jan 29, 2014 11:39 am    Assunto: Responder com Citação

meu teste
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
GustavoToyota
Profissional
Profissional


Registrado: Domingo, 9 de Outubro de 2011
Mensagens: 605
Localização: Sorocaba - SP

MensagemEnviada: Qua Jan 29, 2014 12:46 pm    Assunto: Responder com Citação

Isso é uma bagunça Surprised
Eu usaria resources Rolling Eyes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
mikenewell
Novato
Novato


Registrado: Segunda-Feira, 27 de Janeiro de 2014
Mensagens: 6

MensagemEnviada: Qui Jan 30, 2014 3:18 pm    Assunto: Responder com Citação

Obrigado Strack2012 eu eu quero isso para que minha dll fique interna é tipo igual resource, voce me salvou amigo, obrigado!!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
renato.pavan
Novato
Novato


Registrado: Quarta-Feira, 22 de Junho de 2005
Mensagens: 27

MensagemEnviada: Qui Out 01, 2015 9:19 am    Assunto: Array of Bytes em DLL Responder com Citação

mikenewell escreveu:
Obrigado Strack2012 eu eu quero isso para que minha dll fique interna é tipo igual resource, voce me salvou amigo, obrigado!!!!


Como faço o processo inverso?
Tranformando um array de bytes em DLL?

Obrigado,

Renato.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
renato.pavan
Novato
Novato


Registrado: Quarta-Feira, 22 de Junho de 2005
Mensagens: 27

MensagemEnviada: Sex Out 02, 2015 9:26 am    Assunto: Re: Array of Bytes em DLL Responder com Citação

renato.pavan escreveu:
mikenewell escreveu:
Obrigado Strack2012 eu eu quero isso para que minha dll fique interna é tipo igual resource, voce me salvou amigo, obrigado!!!!


Como faço o processo inverso?
Tranformando um array de bytes em DLL?

Obrigado,

Renato.


Segue a solução caso alguém precise!

Código:

var
  myFile: file of Byte;
begin
  AssignFile(myFile, 'libxml2.dll');
  ReWrite(myFile);

  BlockWrite(myFile,
    libxml2, //Meu array de Byte
    High(libxml2) //Tamanho total do meu Array
    );

  CloseFile(myFile);


Renato.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB