JuanOrtega
26-08-2014, 23:34:13
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#
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 :
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 :
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 ?
Codigo C#
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 :
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 :
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 ?