Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Unir MemoryStream (https://www.clubdelphi.com/foros/showthread.php?t=79813)

madiazg 12-08-2012 15:32:38

Unir MemoryStream
 
Hola,
necesito unir dos MemoryStream en un tercero y guardar este último como un fichero. Cargo el primero pero no se añadir al final del primero el segundo memoryStream:

Código:

procedure UnirArchivos( nFile1, nFile2, nFileOut: string );
var
  File1,File2,FileOut: TMemoryStream;
begin
  File1 := TMemoryStream.Create;
  File2 := TMemoryStream.Create;
  FileOut := TMemoryStream.Create;
  File1.LoadFromFile(nFile1);
  File2.LoadFromFile(nFile2);

  FileOut.LoadFromStream(File1);

// Aquí tengo que copiar File2 al final de FileOut

  FileMpo.SaveToFile(nFileMPO);

  FileL.Free;
  FileR.Free;
  FileMPO.Free;
end;

¿Pueden ayudarme?

Gracias y saludos...
Miguel Angel

ecfisa 12-08-2012 20:10:46

Hola mazdiag.

Una forma puede ser:
Código Delphi [-]
procedure UnirArchivos(NameIn1, NameIn2, NameOut: string);
var
  i: Integer;
  in1, in2, fout: TMemoryStream;
  buffer: Byte;
begin
  in1:= TMemoryStream.Create;
  in2:= TMemoryStream.Create;
  fout:= TMemoryStream.Create;
  try
    in1.LoadFromFile(NameIn1);
    in2.LoadFromFile(NameIn2);
    fout.LoadFromStream(in1);
    fout.Seek(0,soFromEnd);
    for i:= 0 to in2.Size-1 do
    begin
      in2.Read(buffer, 1);
      fout.Write(buffer, 1);
    end;
    fout.SaveToFile(NameOut);
  finally
    in1.Free;
    in2.Free;
    fout.Free;
  end;
end;

Saludos.

WkaymQ48 12-08-2012 21:05:33

Hola,

yo lo haría así:
Código Delphi [-]
procedure UnirArchivos( nFile1, nFile2, nFileOut: string );
var
  File1,File2,FileOut: TFileStream;
begin
  File1 := TFileStream.Create(nFile1,fmOpenRead);
  try
    File2 := TFileStream.Create(nFile1,fmOpenRead);
    try
      FileOut := TFileStream.Create(nFile1,fmCreate);
      try
        FileOut.CopyFrom(File1,0);
        FileOut.CopyFrom(File2,0);
      finally
        FileOut.Free;        
      end;
    finally
      File2.Free;
    end;
  finally
    File1.Free;
  end;
end;

pero si nos ajustamos a lo que pides:
Código Delphi [-]
procedure UnirArchivos( nFile1, nFile2, nFileOut: string );
var
  File1,File2,FileOut: TMemoryStream;
begin
  File1 := TMemoryStream.Create;
  File2 := TMemoryStream.Create;
  FileOut := TMemoryStream.Create;
  File1.LoadFromFile(nFile1);
  File2.LoadFromFile(nFile2);

  FileOut.CopyFrom(File1,0);
  FileOut.CopyFrom(File2,0);

  FileMpo.SaveToFile(nFileMPO);

  FileL.Free;
  FileR.Free;
  FileMPO.Free;
end;

¿Estas creando imágenes mpo? :confused:

madiazg 12-08-2012 21:20:11

Gracias, lo probaré.
Saludos...
Miguel Angel


La franja horaria es GMT +2. Ahora son las 09:30:12.

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