Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-01-2008
Avatar de elcolo83
elcolo83 elcolo83 is offline
Miembro
 
Registrado: feb 2007
Ubicación: Argentina
Posts: 65
Poder: 18
elcolo83 Va por buen camino
Varios archivos en uno

Bueno, mi duda es como puedo hacer para meter varios archivos en uno solo... estoy haciendo una aplicacion en delphi 2007 que usa plugins con archivos ".bpl" y mi idea es juntar a ese archivo ".bpl" con un archivo de configuracion ".ini" y luego encriptarlo en lo posible sin usar un xor sino a travez a de algun otro...
Alguien conoce alguna manera de poder hacerlo?
Responder Con Cita
  #2  
Antiguo 03-01-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por elcolo83 Ver Mensaje
...y mi idea es juntar a ese archivo ".bpl" con un archivo de configuracion ".ini" y luego encriptarlo en lo posible sin usar un xor sino a travez a de algun otro...
Puedes juntar los archivos y encriptarlos, pero luego ¿de qué te servirán?

A la hora de ejecutar tu aplicación, esos dos archivos (BPL/INI) deben estar separados desencriptados si no no podrás acceder a ellos.
Si los encriptas por separado entonces talvez sí. Utiliza algun compresor/encriptador de ejecutables para la BPL y algun algoritmo de encriptación para el INI que luego desde tu aplicación o desde la BPL puedes desncriptar.

De todas formas no acabo de enterder a donde queres ir a parar.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 03-01-2008
Avatar de elcolo83
elcolo83 elcolo83 is offline
Miembro
 
Registrado: feb 2007
Ubicación: Argentina
Posts: 65
Poder: 18
elcolo83 Va por buen camino
Si tenes razon, me olvide de aclarar algo... El hecho de que esten encriptados es por seguridad y que esten juntos es para faciliotar la intalacion del plugin... el programa importa al plugin en una carpeta X pero antes de esto verifica los datos del archivo ".ini" (previamente extraido en la carpeta temp) el ID del equipo y algunas cositas mas (el usuario me entrega su id a la hora de la intalacion para yo luego darle la licencia y el id de usuario, una pequeña tecnica anti crack).... en fin, comprueba el id del equipo y el usuario y luego si todo esto esta bien extraer los archivos en la carpeta de plugins
Responder Con Cita
  #4  
Antiguo 03-01-2008
Avatar de elcolo83
elcolo83 elcolo83 is offline
Miembro
 
Registrado: feb 2007
Ubicación: Argentina
Posts: 65
Poder: 18
elcolo83 Va por buen camino
Bueno.... aca esta la primera parde del problema resuelto...
es un form con 3 botones, un listbox y un opendialog respectivamente renombrados tengo esto:

Código Delphi [-]

unit ConcatArch;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm3 = class(TForm)
    BAgregar: TButton;
    BExtraer: TButton;
    Lista: TListBox;
    OpenD: TOpenDialog;
    Contenido: TButton;
    procedure BAgregarClick(Sender: TObject);
    procedure BExtraerClick(Sender: TObject);
    procedure ContenidoClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form3: TForm3;

implementation
Uses FConcatArch;
{$R *.dfm}


procedure TForm3.BAgregarClick(Sender: TObject);
var i: integer;
var
Stream: TFileStream;
begin
if OpenD.Execute then
  begin
    Stream:= TfileStream.Create('d:\prueba.concat',fmShareExclusive or fmCreate);
    try
      for I := 0 to OpenD.Files.Count - 1 do
        Agregar(OpenD.Files[i], Stream);
    finally
      Stream.Free;
    end;
  end;
end;

procedure TForm3.BExtraerClick(Sender: TObject);
var Stream: TFileStream;
begin
if Lista.ItemIndex>=0 then
begin
  Stream:= TfileStream.Create('d:\prueba.concat',fmOpenRead or fmShareDenyWrite);
  try
    Extraer('d:\Temp',Stream, Lista.Items[Lista.ItemIndex]);
  finally
    Stream.Free;
  end;
end;
end;

procedure TForm3.ContenidoClick(Sender: TObject);
var Stream: TFileStream;
    L: TStrings;
begin
Stream:= TfileStream.Create('d:\prueba.concat',fmOpenRead or fmShareDenyWrite);
  try
    L:= TStrings.Create;
    VerContenido(Stream, L);
    Lista.Items:= L;
    L.Free;
  finally
    Stream.Free;
  end;
end;

end.


Luego en una unidad que llame FConcatArch tengo estas funciones:

Código Delphi [-]
unit FConcatArch;

interface
Uses SysUtils, Classes;

  type TCabecera = packed record
    Nombre: String[255];
    Longitud: int64;
    end;


procedure Agregar(Archivo: string; Stream: TStream);
procedure Extraer(Ruta: string; Stream: TStream; NombreArch: String);
procedure VerContenido(Stream: TStream; var Lista: TStrings);


implementation


procedure Agregar(Archivo: string; Stream: TStream);
var
  Cabecera: TCabecera;
  FileStream: TFileStream;
begin
  Stream.Seek(0,soFromEnd);
  FileStream:= TFileStream.Create(Archivo,fmOpenRead or fmShareDenyWrite);
  try
    FillChar(Cabecera,Sizeof(Cabecera),0);
    Cabecera.Nombre:= ExtractFileName(Archivo);
    Cabecera.Longitud:= FileStream.Size;
    Stream.Write(Cabecera,Sizeof(Cabecera));
    Stream.CopyFrom(FileStream,0);
  finally
    FileStream.Free;
  end;
end;



procedure Extraer(Ruta: string; Stream: TStream; NombreArch: String);
var
  Cabecera: TCabecera;
  FileStream: TFileStream;
begin
  if Copy(Ruta,Length(Ruta),1) <> '\' then
    Ruta:= Ruta + '\';
  Stream.Seek(0,soFromBeginning);
  while Stream.Position < Stream.Size do
    begin
      Stream.Read(Cabecera,Sizeof(Cabecera));
      if Cabecera.Nombre=NombreArch then
        begin
          with TFileStream.Create(Ruta + Cabecera.Nombre,fmCreate or fmShareExclusive) do
            try
              CopyFrom(Stream,Cabecera.Longitud);
            finally
              Free;
            end;
          Break;
        end
      else Stream.Position:= Stream.Position+Cabecera.Longitud;
    end;
end;


procedure VerContenido(Stream: TStream; var Lista: TStrings);
var
  Cabecera: TCabecera;
  FileStream: TFileStream;
  L: TStringList;
  i: integer;
begin
  L:= TStringList.Create;
  Stream.Seek(0,soFromBeginning);
  L.Clear;
  while Stream.Position < Stream.Size do
    begin
      Stream.Read(Cabecera,Sizeof(Cabecera));
      Stream.Position:= Stream.Position+ Cabecera.Longitud;
      L.Add(Cabecera.Nombre);
    end;
  Lista:= L;
end;


end.


las funciones agregar y extraer las saque de este hilo http://www.clubdelphi.com/foros/arch...hp/t-2832.html
y modifique ligeramente la funcion extraer

Con esto ya tengo los archivos metidos en uno solo ahora me queda lo de la encriptacion...
Responder Con Cita
  #5  
Antiguo 03-01-2008
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Para cifrar permiteme recomendarte esto:

http://delphi.jmrds.com/?q=node/31

Por cierto, el código para concatenar se me hacia conocido y no sabia porque , me estoy heciendo viejo
Responder Con Cita
  #6  
Antiguo 03-01-2008
Avatar de elcolo83
elcolo83 elcolo83 is offline
Miembro
 
Registrado: feb 2007
Ubicación: Argentina
Posts: 65
Poder: 18
elcolo83 Va por buen camino
Muy bien.... muchas gracias por tu aporte, ayer habia estado buscando algun cosigo con el cifrado de AES pero no lo encontraba para delphi, aparecian algunos para C pero tenia que transquibir algunos archivos de C a Delphi para poder usar ese codigo y era un poco mas extenso que este que me pasaste... Ahora le voy a agregar una funcion a este programita test para ver como anda, Gracias!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Aplicación con varios archivos Alexander Varios 8 08-11-2007 15:15:22
obtener el nombre de varios archivos rzf1983 Varios 4 24-10-2007 18:18:29
Abrir varios archivos asociados a la aplicacion JMGR Varios 2 11-02-2007 00:12:39
UPLOAD de varios archivos por código HombreSigma .NET 3 04-12-2005 15:23:07
Borrar varios archivos mrmanuel Varios 5 27-05-2004 02:03:54


La franja horaria es GMT +2. Ahora son las 09:35:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi