Ver Mensaje Individual
  #3  
Antiguo 15-06-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
Si entrar en la comunicacion por la red, tema complicado que ya se ha tratado y que depende mucho de los componentes utilizados, vamos a tratar el tema de meter y sacar un texto al principio de un Stream. Tema tambien recurrente como se puede ver en este hilo o en este otro.

Aqui os dejo un ejemplo, en el insertamos en un stream una cadena de texto y una imagen, y luego sacamos el texto y el stream por separado.

Para meterlo:
Código Delphi [-]
var
  Mem: TMemoryStream;
  Str: string;
begin
  Str:= 'Hola';
  Mem:= TMemoryStream.Create;
  try
    // Guardamos el texto, observa que ademas del texto guardamos el caracter nulo
    Mem.WriteBuffer(PChar(Str)^,Length(Str)+1);
    // Guardamos la imagen de un TImage
    Image1.Picture.Graphic.SaveToStream(Mem);
    // Guardamos en stream en el disco
    Mem.SaveToFile('c:\1.bin');
  finally
    Mem.Free;
  end;
end;

Para sacarlo:
Código Delphi [-]
var
  Mem1, Mem2: TMemoryStream;
  Str: string;
begin
  Mem1:= TMemoryStream.Create;
  Mem2:= TMemoryStream.Create;
  try
    Mem1.LoadFromFile('c:\1.bin');
    // Leemos el texto al principio del stream
    Str:= String(PChar(Mem1.Memory));
    ShowMessage(Str);
    Mem1.Seek(Length(str)+1,soFromBeginning);
    // Copiamos el resto del stream en otro stream
    Mem2.CopyFrom(Mem1,Mem1.Size -(Length(Str)+1));
    Mem2.SaveToFile('c:\1.jpg');
  finally
    Mem1.Free;
    Mem2.Free;
  end;
end;
Responder Con Cita