Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Borrar Clave o Seccion de un archivo INI (https://www.clubdelphi.com/foros/showthread.php?t=80379)

martini002 23-09-2012 03:25:31

Borrar Clave o Seccion de un archivo INI
 
Saludos Amigos, donde quiera que se encuentren,

en esta oportunidad quisiera saber si existe la posibilidad
de borrar una seccion de un archivo INI, pero! he aqui la cuestion:

Tenemos una seccion

[Core.System]
CacheExt=.uxx
Paths=../Classes/*.u
Suppress=ScriptWarning
Suppress=WindowedMode

y necesito borrar este: "Suppress=WindowedMode" o colocarle un ";"
al inicio para comentarlo ";Suppress=WindowedMode"

probe con esto pero no funciono, quiza porque hay dos que se llaman igual
alguna idea?
Gracias infinitas :)

Código Delphi [-]
procedure TForm1.Button7Click(Sender: TObject);
var
  Ini:TIniFile;
begin
  //Suppress=WindowedMode
  Ini:= TIniFile.Create(Getcurrentdir()+'\File.Ini');
  Ini.DeleteKey('Core.System', 'Suppress');
end;

Casimiro Notevi 23-09-2012 10:10:27

Cita:

Empezado por martini002 (Mensaje 444020)
probé con esto pero no funcionó, quizá porque hay dos que se llaman igual, ¿alguna idea?

Sí, cámbiale el nombre :D

En serio, no pueden tener el mismo nombre, ¿cómo los diferencias?

Algo que puedes hacer es ponerlo en otra sección, ejemplo:

Código:

[Core.System]
CacheExt=.uxx
Paths=../Classes/*.u
Suppress=ScriptWarning

[Core.System2]
Suppress=WindowedMode

Saludos.

escafandra 23-09-2012 13:09:03

Si estás obligado a hacer eso por código, puedes abrir el archivo y leerlo en un TStringList, buscar la línea o líneas que te interesen y borrarlas... Luego lo guardas en disco...


Saludos.

martini002 23-09-2012 19:23:41

Gracias Roman pero no puedo desarmarlo :/
porque esto sera una aplicacion que haga eso mismo .
en un numero desconocido de computadoras
voy a probar con el TStringList y luego guardarlo en disco.

Saludos, Gracias

martini002 24-09-2012 03:01:44

Bueno estuve leyendo un poco sobre los TStringList
y di al final con este codigo, pero esta presentando un pequeño problema
y realmente no tengo idea de que sera, ya que no se como funciona exactamente el TStringList
La cuestion es que la Variable Posicion comienza en 0 despues de la primera comparacion
cambia a 320 y entra como en un loop infinito algo asi

hechenle un ojito a ver si encuentran algo extraño
Saludos, Gracias!

Código Delphi [-]
procedure TForm1.Button7Click(Sender: TObject);
var
  ATemporal:TStringList;
  Posicion:Integer;
  BorrarKey:Boolean;
begin
  ATemporal:= TStringList.Create;
  ATemporal.LoadFromFile('F:\File.Ini');
  for Posicion:= 0 to ATemporal.Count do
    begin
      //Posicion vale 0
      BorrarKey := ATemporal.Find('Suppress=WindowedMode', Posicion);
      //Posicion vale 320 ahora...
      if BorrarKey=True then
        begin
          ATemporal.Delete(Posicion);
          DeleteFile('F:\File.Ini');
          ATemporal.SaveToFile('F:\File.Ini');
        end;
    end;
end;

Intentanto con un While para usar el contador tenemos:

Código Delphi [-]
  Posicion:=50;
  while Posicion < 100 do
    begin
      BorrarKey := ATemporal.Find('Suppress=WindowedMode', Posicion);//Aqui cambia a 320 igual
      Posicion:=Posicion+1;

martini002 24-09-2012 05:06:18

Bueno encontre una solucion a esto
puede ser optimizada pero tengo sueño y no quiero jum :(
igual se las dejo aqui para quien pueda servirle,
Gracias infinitas por su tiempo
Saludos

Código Delphi [-]
  Posicion:=50;
  Temp:='Suppress=WindowedMode';
  while Posicion < 100 do
    begin
      if ATemporal[Posicion]=Temp then
        begin
          ATemporal.Delete(Posicion);
          DeleteFile('F:\File.Ini');
          ATemporal.SaveToFile('F:\File.Ini');
        end
      Else
        begin
          Posicion:=Posicion+1;
        end;
    end;

escafandra 24-09-2012 11:29:26

Ejemplo sencillo:
Código Delphi [-]
var
  i: integer;
begin
  with TStringList.Create do
  begin
    LoadFromFile('Doc.ini');
    i:= IndexOf('Suppress=WindowedMode');
    if i>=0 then
    begin
      Delete(i);
      SaveToFile('Doc2.ini');
    end;
    free;
  end;
end;

Saludos.


La franja horaria es GMT +2. Ahora son las 08:04:52.

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