Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 23-08-2005
nax nax is offline
Miembro
 
Registrado: mar 2004
Posts: 52
Poder: 23
nax Va por buen camino
Qué tal! Pues ya implementé lo que me has dicho, más un par de líneas para asegurar que los bloques obtenidos contengan cadenas no truncadas. Manejando bloques de 2048 bytes he obtenido alrededor de 4 megas de texto procesados en 8 minutos, por lo que más adelante probaré aumentando dicho bloque al doble o triple, según vaya viendo qué pasa con los recursos de mi Lentium.

La implementación en C++ Builder:

Código:
ifstream in;	// Flujo de lectura
ofstream out; // Flujo de escritura
const int blockSize = 2048;
char buffer[blockSize], faltante[256];
String bloque, ruta = ExtractFileDir (Application->ExeName) + "\\OUT.txt",
		 procesado = ""; // almacenará resultados del procesamiento
 
in.open (edtFuente->Text.c_str()); // Archivo a leer
out.open (ruta.c_str());				// Archivo de resultados
 
if (!in || !out) // No se pudo alguno de ellos abrir...
{
// Mostrar algo
}
else
{
   while (!in.eof())
   {
	 in.read (buffer, blockSize); // Leer los 2048 bytes
 
	 bloque = buffer; // Convirtiendo a String para mejor manejo
 
	 // Asegurándome de que el bloque no quede truncado...
	 in.getline(faltante, 256, ' '); 
	 // Leo hasta el siguiente espacio en blanco o 256 caracteres
	 // (una palabra por muy larga no sobrepasa 15 o 20)
 
	 bloque += faltante; // concateno al bloque
 
	 // Procesando el bloque
	 while (!bloque.IsEmpty())
	 {
		 // ...
	 }
 
	 // Escribo texto procesado en archivo
	 out.write(procesado.c_str(), procesado.Length());
   }
in.close();
}
Bien, así ha sido como he manejado este asunto. Si alguien tiene otra manera más eficiente de manejar ésto no tarde en compartirla Saludos y gracias.

Última edición por nax fecha: 23-08-2005 a las 20:07:35.
Responder Con Cita
 



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


La franja horaria es GMT +2. Ahora son las 03:34:13.


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