Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cambiar nombre a sección de un INIFile (https://www.clubdelphi.com/foros/showthread.php?t=73772)

McK 16-05-2011 12:14:08

Cambiar nombre a sección de un INIFile
 
Hola compadres,

Quiero cambiar solo el nombre a una sección de un INIFile y os quería preguntar cual es la forma más sencilla y eficaz de hacerlo.

Lo más eficaz que se me ha ocurrido a mí es volcar el contenido del archivo en un memo. Buscar el nombre de la sección, cambiarlo y guardar. Seguramente me podáis ayudar a mejorarlo.

Un saludo!

duilioisola 16-05-2011 15:12:38

Creo que esa es la forma más fácil.

Otra manera sería leer todas las propiedades de una sección y escribirlas en la nueva sección.

Más o menos así:
Código Delphi [-]
OldSection, NewSection : string;
Claves, Valores : TStrings;

ReadSection(OldSection, Claves);
ReadSectionValues(OldSection, Valores);
for i := 0 to Claves.Count -1 do
   WriteString(NewSection, Claves[i], Valores[i]);

Caro 16-05-2011 16:19:52

Hola McK, es la misma idea que te ha dado duosiloa, crearte una nueva sección y despues borrar la que tenias antes.

Código Delphi [-]
  IniFile.ReadSections(Secciones);
  Ind := Secciones.IndexOf('SeccionACambiar');
  if Ind<>-1 then
   begin
    IniFile.ReadSection(Secciones[Ind], Claves);
    for i:=0 to Claves.Count-1 do
     begin
      Valor := IniFile.ReadString(Secciones[Ind], Claves[i],'');
      IniFile.WriteString('NuevaSeccion', Claves[i], Valor);
     end;
    IniFile.EraseSection(Secciones[Ind]);
   end;

Saluditos

Casimiro Noteví 16-05-2011 16:44:15

También puedes abrir el fichero con el bloc de notas y cambiarle a mano el nombre :)

ecfisa 17-05-2011 13:10:57

Otra opción no muy complicada es hacerte un procedimiento para cambiar nombres de secciones:
Código Delphi [-]
procedure CambiarNombreSeccion(const RutaNombre, Viejo, Nuevo: string);
var
  TS: TStrings;
  i : Integer;
begin
  TS:= TStringList.Create;
  try
    TS.LoadFromFile(RutaNombre);
    for i:= 0 to ts.Count -1 do
      if Pos(Viejo,'[' + TS[i] + ']') > 0 then
        TS[i]:= '[' + Nuevo + ']';
    TS.SaveToFile(RutaNombre);
  finally
    TS.Free;
  end;
end;

Por ejemplo para llamarlo:
Código Delphi [-]
CambiarNombreSeccion('C:\TEMPORAL\MiArchivoIni.INI','INFO','INFORMACION');

Saludos.

McK 18-05-2011 12:57:08

Cita:

Empezado por ecfisa (Mensaje 400277)
Otra opción no muy complicada es hacerte un procedimiento para cambiar nombres de secciones:
Código Delphi [-]
procedure CambiarNombreSeccion(const RutaNombre, Viejo, Nuevo: string);
var
  TS: TStrings;
  i : Integer;
begin
  TS:= TStringList.Create;
  try
    TS.LoadFromFile(RutaNombre);
    for i:= 0 to ts.Count -1 do
      if Pos(Viejo,'[' + TS[i] + ']') > 0 then
        TS[i]:= '[' + Nuevo + ']';
    TS.SaveToFile(RutaNombre);
  finally
    TS.Free;
  end;
end;

Por ejemplo para llamarlo:
Código Delphi [-]
CambiarNombreSeccion('C:\TEMPORAL\MiArchivoIni.INI','INFO','INFORMACION');

Saludos.

Gracias a todos y perdón por la tardanza!!

Al final he hecho algo muy similar a lo que ha puesto ecfisa. Lo del bloc de notas no era una opción porque tenía que cambiar unas 1000 xDDD

Gracias de nuevo!


La franja horaria es GMT +2. Ahora son las 08:40:09.

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