Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-08-2015
walterk. walterk. is offline
Miembro
NULL
 
Registrado: ago 2015
Posts: 11
Poder: 0
walterk. Va por buen camino
Ayuda con edicion de archivo inno setup

Hola comunidad..
Necesito si me pueden dar una mano con la lectura y escritura en un archivo tipo txt. El archivo esta compuesto de la siguiente manera:

Cita:
[Area.133] -------------------------ESTE ES EL ULTIMO ITEM QUE APARECE EN EL ARCHIVO
Title=SA98
Local=SA98\SA98 SL
Layer=133 --------------------------AQUI REPITE EL MISMO NUMERO DE AREA
Active=TRUE
Required=FALSE

-------------------------------------------------------------------------------------------------------------------------------------------------------------

[Area.134] --------------------------ESTE SERIA EL QUE TENGO QUE AGREGAR SUIGUIENDO EL ORDEN DE NUMEROS
Title=SOb
Local=AS\SOL
Layer=134 --------------------------Y LO MISMO EN ESTE CASO QUE REPITE EL MISMO NUMERO DE AREA
Active=TRUE
Required=FALSE
El mismo necesito modificarlo cuando hago la instalacion de las areas(esa parte la tengo lista y funcionando), pero aqui no se como resolverlo.
Agradezco cualquier mano que me puedan brindar.
Responder Con Cita
  #2  
Antiguo 30-08-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Cita:
pero aqui no se como resolverlo.
Pero, que es lo que necesitas hacer?
Responder Con Cita
  #3  
Antiguo 30-08-2015
walterk. walterk. is offline
Miembro
NULL
 
Registrado: ago 2015
Posts: 11
Poder: 0
walterk. Va por buen camino
Hola Agustin, gracias por responderme, lo que necesito es que cada vez que instale un area nueva, incremente los numeros en los dos lugares marcados y escriba el texto del area, como puse en el ejemplo, no se si se entiende? el dato title, Local, Active y Required son fijos pero no se como hacer que abra el archivo lea cual e el ultimo y agregue el numero incrementado a Area.134 y lo copie a layer.

[Area.134] --------------------------ESTE SERIA EL QUE TENGO QUE AGREGAR SUIGUIENDO EL ORDEN DE NUMEROS
Title=SOb
Local=AS\SOL
Layer=134 --------------------------Y LO MISMO EN ESTE CASO QUE REPITE EL MISMO NUMERO DE AREA
Active=TRUE
Required=FALSE

Gracias nuevamente por tu tiempo.
Responder Con Cita
  #4  
Antiguo 30-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración
Responder Con Cita
  #5  
Antiguo 31-08-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola walterk.

Si tenes la certeza de que las cadenas a buscar ('[Area.' y 'Layer=') siempre existirán en el archivo, podrías hacer:
Código Delphi [-]
uses StrUtils;

procedure ActualizarArea(const FileName, Area: string);
var
  Strings: TStrings;
  i, p1, p2: Integer;
  cad : string;
begin
  Strings := TStringList.Create;
  try
    Strings.LoadFromFile(FileName);

    // Area
    for i := 0 to Strings.Count-1 do
      if Pos('[Area.', Strings[i]) <> 0 then Break;
    cad  := Strings[i];
    p1 := Pos('[Area.', cad);
    p2 := PosEx(']', cad, p1);
    Delete(cad, p1 + 6, p2 - p1 - 6);
    Insert(Area, cad, p1 + 6);
    Strings[i] := cad;

    // Layer
    for i := 0 to Strings.Count-1 do
      if Pos('Layer=', Strings[i]) <> 0 then Break;
    cad := Strings[i] + '~'; // indicador de final
    p1  := Pos('Layer=', cad);
    p2  := PosEx('~', cad, p1);
    Delete(cad, p1 + 6, p2 - p1 - 6 + 1);
    Insert(Area, cad, p1 + 6);
    Strings[i] := cad;

    Strings.SaveToFile(FileName);
  finally
    Strings.Free;
  end;
end;
Ejemplo de uso:
Código Delphi [-]
const
  FNAME = 'area.txt';

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Lines.LoadFromFile(FNAME);
end;

procedure TForm1.btNewVersionClick(Sender: TObject);
begin
  ActualizarArea(FNAME, '3141592654' ); // o también: ActualizarArea(FNAME, IntToStr(entero));
  Memo1.Lines.LoadFromFile('c:\tmp\area.txt');
end;


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 31-08-2015 a las 18:28:30. Razón: corregir caracter del código
Responder Con Cita
  #6  
Antiguo 01-09-2015
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Yo creo que sería más adecuado usar un TINIFile. Su método ReadSections devuelve la lista de secciones, por lo que no tendrás que ir adivinándolas. Luego ya puedes usar el resto de métodos para obtener, modificar, crear y/o eliminar valores y secciones.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #7  
Antiguo 02-09-2015
walterk. walterk. is offline
Miembro
NULL
 
Registrado: ago 2015
Posts: 11
Poder: 0
walterk. Va por buen camino
Hola gracias por tu respuesta y el trabajo que te has tomado en poner las imagenes, ahora te hago una consulta si es posible.
Tienes idea como incluir tu codigo en inno setup para que cumpla la funcion cuando instalo la zona deceada?.

Gracias nuevamente por tu tiempo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
[Inno Setup] InnoExtractor, aplicación para desempaquetar instaladores de Inno Setup NucleousXE Varios 4 28-10-2014 14:12:33
¿Cómo puedo editar archivo texto con inno setup? to_to Varios 3 23-01-2014 14:59:22
ayuda con inno setup elardk Varios 1 27-04-2012 01:46:19
Ayuda con Inno Setup davezf Varios 10 16-03-2005 20:18:49
Problema Archivo .INI con Inno SetUp 5 VRO Varios 6 12-01-2005 17:41:50


La franja horaria es GMT +2. Ahora son las 20:21:55.


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
Copyright 1996-2007 Club Delphi