Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con TFileStream (https://www.clubdelphi.com/foros/showthread.php?t=66316)

MrCuCo 12-02-2010 22:54:40

Ayuda con TFileStream
 
Ok, tengo este codigo:

Código Delphi [-]
Procedure TForm1.FormCreate(Sender: TObject);
  Var
    Archivo1, Archivo2: TFileStream;
    BytesBuffer: Array[0..1024] Of String;
    I: Integer;

Begin
  Archivo1 := TFileStream.Create('/home/diego/Tux', FmOpenRead);
  Archivo2 := TFileStream.Create('/home/diego/Tux2', FmOpenWrite
    Or FmCreate);
  Repeat
    Archivo1.Read(BytesBuffer, SizeOf(BytesBuffer));
    Archivo2.Write(BytesBuffer, SizeOf(BytesBuffer));
  Until (Archivo2.Size = Archivo1.Size);
  Archivo1.Free;
  Archivo2.Free;
End;

lo que quiero hacer es copiar el archivo "tux" a la misma ruta con el nombre "tux2" en bloques de 1 KB, cuando ejecuto ese codigo el archivo se copia pero el bucle nunca termina y tengo que cerrarlo a la fuerza y al final el archivo "tux2" pesa hasta 700 MB cuando el archivo original pesa 1 MB, lo mas raro es que el archivo "tux2" se ejecuta correctamente
se que puedo copiar de otras formas que si funcionan como por ejemplo:
TFileStream.CopyFrom etc...
pero yo necesito copiar el archivo de esta forma , asi que les agradeceria mucho que me pudieran ayudar.
Gracias

delphi.com.ar 13-02-2010 00:48:56

Yo creo que el problema lo tienes porque el archivo de origen tiene un tamaño que no es divisible por el tamaño del buffer y escribes información basura al final del archivo destino, cuando es que lees menos información de la esperada.
Código Delphi [-]
Var
    ...
    iRead: Longint;
begin
  ...
  repeat
    iRead := Archivo1.Read(BytesBuffer, SizeOf(BytesBuffer));
    Archivo2.Write(BytesBuffer, iRead);
  until (iRead <> SizeOf(BytesBuffer));
  ...

Saludos!

MrCuCo 13-02-2010 03:08:50

Cita:

Empezado por delphi.com.ar (Mensaje 353849)
Yo creo que el problema lo tienes porque el archivo de origen tiene un tamaño que no es divisible por el tamaño del buffer y escribes información basura al final del archivo destino, cuando es que lees menos información de la esperada.

Saludos!

Amigo!! eres un genio!, me has salvado :D, muchas muchas gracias, como no pense en eso antes, soy un tonto xD
en serio bro muchas gracias! por ayudar a los que empiezan.
Saludos :D


La franja horaria es GMT +2. Ahora son las 09:26:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi