¡Que bueno que llegamos a una conclusión
mlara!
Sería interesante ver si en Delphi 2007 ocurre lo mismo o si ya había sido tomada en cuenta la sugerencia de aceptar LFs solos.
Cita:
Empezado por mlara
...Lo curioso de esta ventana es que a través de ella no se hacen procesos complejos ni nada que se le parezca, ya que simplemente se leen y guardan los valores de configuración...
Código:
...
IniFile.WriteBool('LogrosAsistencia', 'OrganizarEstudiantesAuto', ckbOrganizarEstudiantesAuto.Checked);
IniFile.WriteBool('LogrosAsistencia', 'ConservarCodigoLogro', ckbConservarCodigo.Checked);
IniFile.WriteBool('LogrosAsistencia', 'ConservarValoracionLogro', ckbConservarValoracion.Checked);
IniFile.WriteBool('LogrosAsistencia', 'AutoDesplazamiento', ckbAutoDesplazamiento.Checked);
IniFile.WriteBool('LogrosAsistencia', 'FaltasTotalesPeriodo', ckbPermitirFaltasTotalesPeriodo.Checked);
IniFile.WriteBool('LogrosAsistencia', 'ForzarAreaMateria', ckbPermitirForzarAreaMateria.Checked);
IniFile.WriteBool('LogrosAsistencia', 'NoActualizarEval', ckbNoActualizarEval.Checked);
IniFile.WriteBool('LogrosAsistencia', 'SolicitarDocumentoRec', ckbSolicitarDocumentoRespaldoRec.Checked);
...
...
|
Esa es una de las razones por las que hace tres o cuatro años buscaba un componente conjunto de datos (
data set) tipo
TIniDataSet o algo por el estilo que me permitiera capturar valores de un archivo .ini en controles
data aware, pero aquella búsqueda resultó infructífera.
Cita:
Empezado por mlara
...Solamente este procedimiento tiene 398 líneas...
|
Desde mi punto de vista, ninguna rutina debe tener más de unas cuantas decenas de líneas. He llegado a crear algunas de hasta 50 o 70 líneas, pero por lo general no las escribo con más de un pequeño puñado de sentencias. El código atomizado es más fácil de depurar y mantener y goza de mayor aprovechamiento.
Cita:
Empezado por mlara
...Hay forma de reducir este código?...
|
Se empieza por buscar
patrones de código consistentes, susceptibles a ser optimizados.
Código:
...
{ Ajusté los nombres de los cuadros de verificación para que concordaran
con los nombres de las llaves }
IniFile.WriteBool('LogrosAsistencia', 'OrganizarEstudiantesAuto', ckbOrganizarEstudiantesAuto.Checked);
IniFile.WriteBool('LogrosAsistencia', 'ConservarCodigoLogro', ckbConservarCodigoLogro.Checked);
IniFile.WriteBool('LogrosAsistencia', 'ConservarValoracionLogro', ckbConservarValoracionLogro.Checked);
...
Aquí vemos que se hacen varias llamadas al
mismo método (IniFile.WriteBool), guardando en la
misma sección (
LogrosAsistencia) del archivo INI, el estado que presentan diversos cuadros de verificación, los cuales llevan el
mismo nombre que la llave que les corresponde, con excepción de las tres primeras letras (
ckbOrganizarEstudiantesAuto ->
OrganizarEstudiantesAuto).
Se me ocurre que puede escribirse un procedimiento que pueda ser llamado de esta forma:
Código Delphi
[-]
GuardarChecks ('LogrosAsistencia', ['OrganizarEstudiantesAuto', 'ConservarCodigoLogro', 'ConservarValoracionLogro', ...]);
Incluso podría reducirse más, lo anterior es solo una aproximación.
Me alegro por haber ayudado a resolver el misterio.
Un abrazo con retorno y sin fin.
Al González.
