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 26-08-2014
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
Agregar peso vacio a un ejecutable

Hola estoy por volverme loco con este problema , hace dos dias que estoy tratando de buscar informacion de como abrir un archivo y agregarle peso vacio a un archivo ejecutable que es lo que originalmente hace este codigo en C#.

Codigo C#

Código:
            byte[] b = new byte[50 * 1024]; /* 50 kb */
            FileStream fS = File.Open("test.exe", FileMode.Append);
            fS.Write(b, 0, b.Length);
            fS.Close();
Lo peor es que el codigo en C# funciona perfecto y son solo cuatro lineas cuando en delphi eh hecho mas y termino arruinando el archivo ejecutable.

Inicialemente intente con :

Código:
procedure SaveBytesToFile(const Data: TBytes; const FileName: string);
var
  stream: TMemoryStream;
begin
  stream := TMemoryStream.Create;
  try
    if length(data) > 0 then
      stream.WriteBuffer(data[0], length(data));
    stream.SaveToFile(FileName);
  finally
    stream.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SaveBytesToFile(1024,'test.exe');
end;
Pero el problema con este codigo es que no encuentro y no se que tengo que poner en el valor TBytes en el primer argumento que supongo que
es el peso que quiero agregar puse 1024 pero da error y no encuentro informacion de que valor tengo que poner.

Tambien intente con este codigo :

Código:
procedure TForm1.Button1Click(Sender: TObject);
var  fs:tfilestream;
       buffer:integer;
begin

fs.create('test.exe',fmcreate);
fs.writebuffer(buffer,'1024');
fs.free;

end;
Intente en este codigo agregar 1024 bytes pero en este intento termino arruinando el ejecutable.

¿ Que estoy haciendo mal ?
Responder Con Cita
  #2  
Antiguo 26-08-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Lepuke.

Intenta de este modo:
Código Delphi [-]
var
  buf: array[0..50*1024] of Byte;
begin
  with TFileStream.Create('test.exe', fmOpenReadWrite) do
  try
    Seek(0, soFromEnd);
    FillChar(buf, SizeOf(buf), 0);
    Write(buf, SizeOf(buf));
  finally
    Free;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 27-08-2014
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
funciona excelente ecfisa , gracias por la ayuda , te queria preguntar sobre esta linea :
Código:
var   buf: array[0..50*1024] of Byte;
el tema es que cuando haga personizable el programa necesito tener el valor 1024 en un edit1 y desde el var parece que no puedo hacerlo porque hago :

Código:
var   buf: array[0..50*edit1.Text] of Byte;
¿ hay alguna forma de establecer el valor del byte buf en otro lado donde pueda ponerle el valor de 1024 desde una caja de texto ? , te lo pregunto porque creo que no se puede poner el valor justo cuando esta en la parte de var.

Acabo de tratar de hacer lo que queria pero esta mal mira :

Código:
procedure TForm1.Button1Click(Sender: TObject);
var
  buf: array of Byte;
begin
  buf:= array[0..50*edit1.Text];
end;
gracias por responder
Responder Con Cita
  #4  
Antiguo 27-08-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
No entiendo como te pones a modificar binarios y no sabes lo elemental de tipos de datos en pascal. "Text" no multiplica con numeros...

Afortunadamente tengo la solucion *.




---
*PD: Ves? Es como decir "Algo sale mal".
__________________
El malabarista.
Responder Con Cita
  #5  
Antiguo 27-08-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Lepuke.
Cita:
Empezado por Lepuke Ver Mensaje
¿ hay alguna forma de establecer el valor del byte buf en otro lado donde pueda ponerle el valor de 1024 desde una caja de texto ?
Código Delphi [-]
procedure InflateExe(const aFileName: string; const NoBytes: LongWord);
var
  buf: array of Byte;
  i: Integer;
begin
  with TFileStream.Create(aFileName, fmOpenReadWrite) do
  try
    SetLength(buf, NoBytes);
    ZeroMemory(@buf[1], Length(buf));
    Seek(0, soFromEnd);
    Write(buf[0], Length(buf));
  finally
    Free;
  end;
end;

Uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  InflateExe('test.exe', StrToInt(Edit1.Text));
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 27-08-2014 a las 02:29:56.
Responder Con Cita
  #6  
Antiguo 27-08-2014
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
en serio ecfisa , gracias por la ayuda.
Responder Con Cita
  #7  
Antiguo 27-08-2014
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
Question para que inflar un .exe?

Me pica la curiosidad: Para que "inflar" un .exe?
Responder Con Cita
  #8  
Antiguo 27-08-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola orodriguezca.

No lo ha comentado, pero supongo que deseará incrustar algo en el espacio adicionado.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 28-08-2014
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Comparto tu comentario...
Cita:
Empezado por mamcx Ver Mensaje
No entiendo como te pones a modificar binarios y no sabes lo elemental de tipos de datos en pascal.
Sin comentarios al código que escribió...
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  buf: array of Byte;
begin
  buf:= array[0..50*edit1.Text];
end;
Te aconsejo que leas y documentes sobre lo básico antes de emprender este tipo de tareas.
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
El SPAM en México está de a peso AzidRain La Taberna 8 18-05-2010 16:27:29
Como agregar un ejecutable a DEP de XP? JuanErasmo API de Windows 0 10-04-2007 20:34:46
Reducir El peso de Un archivo txt naguilar Varios 4 25-10-2004 10:34:11
peso del installshield. kwan Varios 2 26-09-2003 12:06:32


La franja horaria es GMT +2. Ahora son las 11:17:03.


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