Ver la Versión Completa : Borrar Clave o Seccion de un archivo INI
martini002
23-09-2012, 03:25:31
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 :)
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
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:
[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!
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:
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
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:
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.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.