Autor Tema: mod_leeIni (Lee y modifica archivos .ini)  (Leído 10662 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Conectado panreyes

  • Administrator
  • Hero Member
  • *****
  • Mensajes: 2009
  • Karma: 64
  • Sexo: Masculino
    • Ver Perfil
    • panreyes.com
Re:mod_leeIni (Lee y modifica archivos .ini)
« Respuesta #15 en: Marzo 14, 2014, 11:17:14 am »

Y aquí otra versión en la que cargo el INI en memoria, evitando abrir el fichero INI múltiples veces:
Código: [Seleccionar]

Global
string loaded_ini_data;
End


Function load_ini(string ruta);
Begin
loaded_ini_data=file(ruta);
end


Function string read_ini(string seccion,string clave);
Private
string datos;
int pos_seccion;
int pos_siguiente_seccion;
int pos_igual;
int pos_principio_clave;
int pos_final_clave;
Begin
if((pos_seccion=find(loaded_ini_data,"["+seccion+"]"))>-1) //buscamos el principio de la sección
pos_siguiente_seccion=find(loaded_ini_data,""+chr(10)+"[",pos_seccion); //averiguamos dónde empieza la siguiente sección
if((pos_principio_clave=find(loaded_ini_data,""+clave+"=",pos_seccion))>-1) //buscamos la clave siguiente con ese nombre
if(pos_siguiente_seccion==-1 or pos_principio_clave<pos_siguiente_seccion) //que se encuentre en esa sección
pos_final_clave=find(loaded_ini_data,chr(13),pos_principio_clave); //msdos, \r
pos_principio_clave+=len(clave)+1; //detrás del =
datos=substr(loaded_ini_data,pos_principio_clave,pos_final_clave-pos_principio_clave);
end
end
end

return datos;
end