Estaba leyendo el tema de manejo de ficheros con la clase TFilestream en la pagina delphi al limite
en especifico este:
http://delphiallimite.blogspot.mx/20...exto-y_30.html
y me tope con que para leer archivos binarios y acelerar el proceso, se leia la informacion a travez de bloques y no byte a byte por cuestiones obvias de procesamiento y tiempo
( bueno eso entendi yo
).
En los ejemplos se ve que se crea un arreglo de 1024 bytes (equivalente a un kb), pero me percate de que si se leian bloques mas grandes era mas rapido pero tambien mas propensos ha que se escribiera "informacion basura",
es decir que si voy a leer archivos de unos de cientos kb no es necesario pedir bloques de 1024 o si voy a trabajar con varios gigabytes terminaria siendo algo deficiente ya que necesitaria un bloque de mayor tamaño, bueno eso creo.
Asi que se me ocurrio una idea que es la de leer un archivo creando un bloque a su medida ejemplo: si voy a leer 3000 bytes creo uno de ese tamaño
pero no se si es lo mas correcto hacer esto, asi que pido su sabiduria
para saber si lo que digo tiene algo de logica o es una burrada o si me mantengo trabajando con bloques de 1024 bytes, bueno que para mi por ahora me van muy bien ya que no trabajo con informacion muy grande pero siempre es bueno saber.
les dejo el codigo:
Código Delphi
[-]
var
fr,fw:TFileStream;
buffer:array of byte;
tam:integeR;
begin
fr:=TFileStream.Create('dataoriginal.exe',fmOpenRead); fw:=TFileStream.Create('nuevo.exe',fmCreate);
try
SetLength(buffer,fr.Size); tam:=fr.Size;
while (fr.Position<=fr.Size-1) do
begin
fr.Read(buffer,tam); fw.Write(buffer,tam);
end;
finally
fr.Free;
fw.Free;
end;
writeln('Escrito');
readln;
end.