Hola Ramsay
Cita:
Empezado por Ramsay
Hola ecfisa gracias por la ayuda , tu codigo funciona perfecto para cuando junto un ejecutable con otro archivo y luego los desuno , se descomprime bien pero cuando ejecuto el ejecutable desunido se muestra :
Cita:
Windows no puede encontrar el archivo "la ruta..." , Asegurese que el nombre este escrito correctamente e intetelo de nuevo
|
o
Cita:
La version de este archivo no es compatible con la version de windows que esta ejecutando ... (y despues habla de 32 o 64 bits)
|
Eh comprobado los size de los archivos y estan perfectos , ¿ conoces alguna solucion para corregir este problema ?
|
Acabo de hacer la prueba (bajo Windows 32 bits) uniendo y extrayendo un archivo ejecutable con uno de texto sin ningún problema usando este código:
Código Delphi
[-]
procedure ConcatFiles(const SourceNames: array of string; const TargetName: string);
var
Source, Target: TFileStream;
i : Integer;
begin
if Length(SourceNames) < 1 then
raise Exception.Create('Se requieren dos archivos al menos');
Target := TFileStream.Create(TargetName, fmCreate);
try
for i := Low(SourceNames) to High(SourceNames) do
begin
Source := TFileStream.Create(SourceNames[i], fmOpenRead);
try
Target.CopyFrom(Source, Source.Size);
finally
Source.Free;
end;
end;
finally
target.Free;
end;
end;
procedure ExtractFiles(const SourceName: string; const TargetNames: array of string;
const SizeTargets: array of Integer);
var
Source, Target: TStream;
Buffer: array of Byte;
i : Integer;
begin
Source := TFileStream.Create(SourceName, fmOpenRead);
try
for i := Low(TargetNames) to High(TargetNames) do
begin
Target := TFileStream.Create(TargetNames[i], fmCreate);
try
SetLength(Buffer, SizeTargets[i]);
Source.ReadBuffer(Pointer(Buffer)^, Length(Buffer));
Target.WriteBuffer(Buffer[0], Length(Buffer));
Form1.Memo1.Lines.Add(PChar(Buffer));
finally
Target.Free;
end;
end;
finally
Source.Free;
end;
end;
El ejecutable funciona sin problema luego de ser extraido y el archivo de texto mantiene su contenido original.
En cuanto a los errores que comentas, el primero da toda la impresión que está provocado por un error al escribir alguna ruta o nombre de archivo.
Si bien el segundo mensaje advierte sobre alguna incompatibilidad de S.O., es muy probable que se produzca por enviar a la rutina de extracción un tamaño de archivo erróneo.
Saludos