Ver Mensaje Individual
  #7  
Antiguo 20-05-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Vamos a ver, sin saber lo que intentas hacer no se si podre ayudarte. Pero aqui te dejo dos ejemplos, puede que saques alguna cosa util de ellos:

En este ejemplo metemos en un stream una cabecera con el tamaño del archivo, y a continuacion el archivo.
Código Delphi [-]
var
  Stream: TMemoryStream;
  Archivo: TFileStream;
  Nombre: string;
  Cabecera: String;
begin
  // Nombre del archivo
  Nombre:= 'd:\Prueba.jpg';
  Stream:= TMemoryStream.Create;
  try
    Archivo:= TFileStream.Create(Nombre,fmOpenRead);
    try
      // En la acbecera vamos a colocar el tamaño del archivo
      Cabecera:= IntToStr(Archivo.Size);
      Stream.WriteBuffer(PChar(Cabecera)^,length(Cabecera)+1);
      // Y cargamos el resto del archivo
      Stream.CopyFrom(Archivo,0);
      // Ahora lo guardamos paar ver el resultado
      Stream.SaveToFile('d:\Archivo.bin');
    finally
      Archivo.Free;
    end;
  finally
    Stream.Free;
  end;
end;

En este otro cargamos un archivo en un stream, extramemos el contenido de la cabecera y a continuacion copiamos el resto del stream en otro stream.
Código Delphi [-]
var
  Stream: TMemoryStream;
  Archivo: TFileStream;
  Cabecera: String;
  Size: Integer;
begin
  // Nombre del archivo
  Stream:= TMemoryStream.Create;
  try
    Stream.LoadFromFile('d:\Archivo.bin');
    Archivo:= TFileStream.Create('d:\Prueba.jpg',fmCreate);
    try
      Cabecera:= String(PChar(Stream.Memory));
      ShowMessage(Cabecera);
      Size:= StrLen(PChar(Stream.Memory))+1;
      Stream.Seek(Size,soFromBeginning);
      Archivo.CopyFrom(Stream,Stream.Size-Size)
    finally
      Archivo.Free;
    end;
  finally
    Stream.Free;
  end;
end;
Responder Con Cita