Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-02-2015
Avatar de BDWONG
BDWONG BDWONG is offline
Miembro
NULL
 
Registrado: nov 2013
Posts: 113
Poder: 11
BDWONG Va por buen camino
Leer archivos binarios

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); //este archivo ya existe
  fw:=TFileStream.Create('nuevo.exe',fmCreate);//este archivo lo crearemos

  try

    SetLength(buffer,fr.Size);//crea un bloque a la medida
    tam:=fr.Size;//guarda el tamaño en bytes a leer
    
    while (fr.Position<=fr.Size-1) do
      begin
      fr.Read(buffer,tam);//leemso el fichero con el bloque a la medida
      fw.Write(buffer,tam);//creamos el mismo fichero con el bloque a la medida

    end;

  finally
    fr.Free;
    fw.Free;
  end;

  writeln('Escrito');
  readln;
end.

Última edición por BDWONG fecha: 27-02-2015 a las 06:41:10.
Responder Con Cita
  #2  
Antiguo 28-02-2015
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.234
Poder: 20
ElKurgan Va camino a la fama
Gracias por compartir.

Creo que, con los ordenadores actuales, no hay problema de usar bloques más grandes.

Saludos
Responder Con Cita
  #3  
Antiguo 02-03-2015
Avatar de Kiranov
Kiranov Kiranov is offline
Miembro
 
Registrado: ago 2012
Ubicación: Chihuahua, Mexico.
Posts: 47
Poder: 0
Kiranov Va por buen camino
Buenas tardes,

No se si tenga mucho que ver pero tego una duda: ¿si se optimiza el tamaño del bloque con el del cluster se optimizaria este proceso?
http://support.microsoft.com/kb/140365/es

Saludos!
__________________
Kiranov (Alberto Vega)
Chihuahua, Mexico.
---------------------------------------------------------------------------------
"El hardware es lo que hace a una máquina rápida;
el software es lo que hace que una máquina rápida se vuelva lenta."

Craig Bruce en 1990
---------------------------------------------------------------------------------
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Leer archivos binarios MasLoveAvge Varios 7 02-01-2016 11:29:40
Leer archivos binarios JuanOrtega Varios 2 12-07-2013 01:37:12
archivos binarios kazcote Varios 5 05-12-2005 04:02:35
Leer enteros de 32-bits en ficheros binarios elcaracas C++ Builder 2 08-04-2005 21:46:54
archivos exe y/o binarios fcran Varios 2 26-06-2003 14:34:21


La franja horaria es GMT +2. Ahora son las 16:27:13.


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
Copyright 1996-2007 Club Delphi