Hola.
Tal como te comenta
roman, si previamente no agregas una marca, vas a tener que enviar los nombres y tamaños de los archivos (bytes) a extraer, por ejemplo:
Código Delphi
[-]
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));
finally
Target.Free;
end;
end;
finally
Source.Free;
end;
end;
Llamada ejemplo:
Código Delphi
[-]
ExtractFiles('concatenacion.txt', ['a1.txt', 'a2.txt', 'a3.txt'], [204, 192, 327 ]);
Saludos