Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-11-2010
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Poder: 0
blaiselaborde Va por buen camino
Tamaño máximo ficheros .ini

Hola;

Tengo un fichero .ini que leo desde mi aplicación en Delphi 7 y, una de mis secciones tiene más de 1800 claves ó registros, pero al hacer el ReadSection, sólo me recoge las primeras 480.

Sabe alguien si el ReadSection tiene límites? y de ser así, existe una manera diferente de leer las líneas sin tener que hacer la búsqueda como si fuese un fichero de texto?.

Gracias;
Responder Con Cita
  #2  
Antiguo 29-11-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y cómo lo lees?
Responder Con Cita
  #3  
Antiguo 29-11-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.267
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿No lo estrás leyendo en un TMemo? Que si tienes límites.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 29-11-2010
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Poder: 0
blaiselaborde Va por buen camino
Lo estoy leyendo en un ComboBox.

He estado revisando el procedimiento ReadSection y veo que tiene definido como constante BufSize = 16384.

Lo que me indica que no permite tamaños mayores de 16K.

Dado que es un rollo intentar cambiar y compilar la unidad IniFiles, intentaré traerme el Procedimiento a local y cambiarle el tamaño del BufSize.
Responder Con Cita
  #5  
Antiguo 29-11-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Léelo hacia un richedit, por ejemplo.
Responder Con Cita
  #6  
Antiguo 30-11-2010
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
También puedes probar con un objeto de la clase TMemIniFile,
en vez de la clase TIniFile.
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #7  
Antiguo 30-11-2010
blaiselaborde blaiselaborde is offline
Miembro
 
Registrado: nov 2006
Ubicación: Reino Unido
Posts: 40
Poder: 0
blaiselaborde Va por buen camino
Gracias a todos.

He podido solucionar el problema como lo indiqué: importando el Procedimiento a mi aplicación y ampliando el BuffSize de 16K a 64K.

El código nuevo ha quedado así:

Código Delphi [-]
Procedure TApliF.pINISectLoadList(aIniFileName, aSectionName: PChar;
                                          Var aList       : TStringList);
Const cBufSize = 65536;
Var bBuffer,
      P      : PChar;
Begin
  GetMem(bBuffer, cBufSize);
  Try
    aList.BeginUpdate;
    Try
      aList.Clear;
      If GetPrivateProfileString(aSectionName, Nil, Nil, bBuffer, cBufSize, aIniFileName) <> 0
      then
        Begin
          P := bBuffer;
          While P^ <> #0 do
            Begin
              aList.Add(P);
              Inc(P, StrLen(P) + 1);
            end;
        end;
    Finally
      aList.EndUpdate;
    end; // Try
  Finally
    FreeMem(bBuffer, cBufSize);
  end; // Try
end; // Proc

Un saludo y hasta la próxima.

Última edición por Casimiro Notevi fecha: 30-11-2010 a las 17:59:53.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Tamaño máximo de los formularios rretamar Gráficos 2 01-07-2007 12:57:48
Tamaño maximo de ficheros tipo file of JF Sebastian OOP 3 05-02-2007 13:27:06
Tamaño máximo de un Store Procedure pache Firebird e Interbase 2 10-07-2006 15:22:29
Que Tamaño Máximo Maneja un TStringList???? AGAG4 Varios 7 27-07-2005 00:06:48


La franja horaria es GMT +2. Ahora son las 01:25:06.


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