Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema Inno Setup (https://www.clubdelphi.com/foros/showthread.php?t=89313)

Zina 31-10-2015 00:40:46

Problema Inno Setup
 
Hola, quisiera agregar una linea de texto a un archivo con la herramienta [INI] sólo que al agregar dicha linea, me aparece ejemplo: [section] llave=texto_que quiero agregar, no quiero que se generen los corchete ni el simbolo igual, sólo quiero que se agregue un simple texto, necesito de su ayuda!!! :(

Neftali [Germán.Estévez] 02-11-2015 10:25:28

Todo dependerá de cómo estés intentando añadir la línea de texto.
Tal vez si pones el código que estás utilizando podamos hacernos una idea de porqué te pasa lo que te pasa.

Aprovecho para darte la bienvenida y recordarte que leas la guía de estilo.

Zina 03-11-2015 17:39:55

Mira:
[Ini]
Filename: "{userdesktop}\prueba.txt"; Section: null ; Key:"sina"; String: "sina"

El resultado es:
[null]
sina=sina


El problema con esta prueba que estoy haciendo es que no me salga [null] ni el simbolo de '=', unicamente necesito que sea una línea de texto. o habrá alguna otra forma de agregar texto en un archivo?

Espero sus comentarios, muchas gracias.

Neftali [Germán.Estévez] 03-11-2015 19:46:28

Utiliza un TStrinList.

Código Delphi [-]
var
  TS:TStringList;
  AFileName:String;
begin
  // Rellenar el nombre del fichero
  AFilename := 'C:\temp\ficherotemporal.ini';
  // Cargar el contenido
  TS := TStringList.Create;
  TS.LoadFromFile(AFileName);
  // Añadir una linea
  TS.Add('Filename: "{userdesktop}\prueba.txt"; Section: null ; Key:"sina"; String: "sina"');
  // Volver a Grabarlo
  TS.SaveToFile(AFileName);

Según lo que he entendido, que no es mucho, esto debería servir.

Zina 03-11-2015 20:49:52

Hola de nuevo,

Entonces seria desde un [code] no? soy nueva en esto del Inno Setup entonces supongo que es con eso del Code???,
Así tal cual no lo lee necesito finalizarlo con End., End; no me lo valida., lo ejecuto y no me agrega nada :(.

Código Delphi [-]
var
  TS:TStringList;
  AFileName:String;
begin
  // Rellenar el nombre del fichero
  AFilename := '{userdesktop}\prueba.txt';
  // Cargar el contenido
  TS := TStringList.Create;
  TS.LoadFromFile(AFileName);
  // Añadir una linea
  TS.Add('String: "sina"');
  // Volver a Grabarlo
  TS.SaveToFile(AFileName);
 End .


Lo estaré haciendo mal?

Casimiro Notevi 03-11-2015 20:53:06

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

Zina 03-11-2015 22:18:40

Pérdón!!

Va de nuevo


Código Delphi [-]
var
TS:TStringList;
AFileName:String;
begin
// Rellenar el nombre del fichero
AFilename := '{userdesktop}\prueba.txt';
// Cargar el contenido
TS := TStringList.Create;
TS.LoadFromFile(AFileName);
// Añadir una linea
TS.Add('String: "sina"');
// Volver a Grabarlo
TS.SaveToFile(AFileName);
End .

Neftali [Germán.Estévez] 04-11-2015 09:53:12

Cita:

Empezado por Zina (Mensaje 498813)
Hola de nuevo,

Entonces seria desde un [code] no? soy nueva en esto del Inno Setup entonces supongo que es con eso del Code???,
Así tal cual no lo lee necesito finalizarlo con End., End; no me lo valida., lo ejecuto y no me agrega nada :(.

Hola.
¿Pero, esto desde dónde lo quieres hacer?

Este es un código delphi/pascal.
¿Esto se ejecuta desde delphi?

De verdad que no cuesta tanto explicar las cosas con un poco de detalle y con rigurosidad. Y dedicarle tiempo a preguntar.
Porque de otra forma, la gente (como yo) que está intentando ayudarte se desespera y le entran ganas de dejarlo.

De verdad, lee la linea que has puesto e inteta ponerte en nuestro lugar:

Cita:

Empezado por Zina (Mensaje 498813)
...quisiera agregar una linea de texto a un archivo con la herramienta [INI] sólo que al agregar dicha linea, me aparece ejemplo: [section] llave=texto_que quiero agregar, no quiero que se generen los corchete ni el simbolo igual, sólo quiero que se agregue un simple texto

con la herramienta [INI]
=> Eso no es ninguna herramienta
sólo que al agregar dicha linea,
=> No dices ni cómo, ni con qué, ni desde dónde estás agregando esa línea
no quiero que se generen los corchete ni el simbolo igual, sólo quiero que se agregue un simple texto
=> Sin saber la respuesta a la pregunta anterior, esta ya ni tiene sentido.

Creo de verdad que la cuestión es sencilla, pero sincéramente, da la impresión de que ni siquiera has dedicado 1 minuto a explicar lo que necesitas.
¿Cómo quieres que la gente le dedique 5 o 10 a ayudarte?

Un saludo.

iMia 04-11-2015 10:49:28

Un archivo INI de configuración está organizado en secciones...

Código:

[SECCION1]
elemento1DeLaSeccion1=Valor
elemento2DeLaSeccion1=Valor
..
elementonDeLaSeccion1=Valor

[SECCION2]
elemento1DeLaSeccion2=Valor
elemento2DeLaSeccion2=Valor
..
elementomDeLaSeccion2=Valor

por lo que al leer/escribir un archivo INI, debes indicar la sección donde va/está el valor a leer/escribir...

Neftali [Germán.Estévez] 04-11-2015 12:02:52

Cita:

Empezado por iMia (Mensaje 498844)
Un archivo INI de configuración está organizado en secciones...
por lo que al leer/escribir un archivo INI, debes indicar la sección donde va/está el valor a leer/escribir...

Correcto. Se como están organizados los archivos INI.
Y ese archivo INI es a su vez un archivo de texto.
Por lo tanto lo puedes acceder como:

1) Archivo INI. Para ello debes usar la calase TIniFile, con los métodos de esta clase. Puedes añadir líneas, secciones,...
2) Archivo plano de texto. Para ello puedes usar la clase TStringList, como te puse en el ejemplo. Puedes también añadir líneas, borrarlas, editarlas,...
En este último caso, no se trabaja con secciones ni lineas tipo "Clave=Valor", sino con líneas de texto directamente.

Zina 04-11-2015 19:24:29

Hola,

Gracias por sus comentarios, sobre la duda que tenía era como lo puse en el encabezado, pero igual como me lo dicen no me expliqué bien desde un principio y pido disculpa.

El problema es que estoy trabajando con Inno Setup (crear un setup), investigué y encontré que el Inno Setup era fiable para este tipo de requerimiento. El Inno setup crea un .iss, se ve la configuracion de mi instalacion, ahora yo requería que el mismo instalador me agregara una IP en el archivo Host de mi Sistema, y empezé por configurar un archivo de texto cualquiera ubicado en mi Escritorio, estuve investigando ya que soy nueva en el uso de la herramienta Inno Setup y vi que existe [INI] section el cual puede agregar lineas de texto en un archivo, al menos eso vi en su foro, el problema es que como les dije en un principio, lo hice así:

[Ini]
Filename: "{userdesktop}\prueba.txt"; Section: line10; Key:192.186; String: aqui mi texto de prueba

Y mi resultado fue este:

[line10]
192.186=aqui mi texto de prueba

Ya que no puedo omitir ningún parametro por que no imprime si le hace falta alguno.

Así que busqué otras alternativas, y me dijeron que con el código anterior, solo que en Inno Setup tengo que poner la Section [code] para que me reconozca el código, o al menos así lo supuse yo, pero no me agrega ninguna linea de texto.

Espero haber sido más clara y si no es así, les agradezco sus aportaciones y disculpen si no he podido explicarme mejor.

Nota: El código de de [INI] no sé donde configurarlo para que salga como código por que no es Delphi u alguno de las opciones que aquí aparecen, o no sé donde sea, disculpen.

Gracias

roman 04-11-2015 19:47:30

Cita:

Empezado por Zina (Mensaje 498874)
yo requería que el mismo instalador me agregara una IP en el archivo Host de mi Sistema

Por aquí hubieras empezado :)

Un archivo INI, aunque sea un archivo de texto, tiene una estructura especial y las funciones de Inno Setup están pensadas para dicha estructura.

Revisando la documentación de Pascal Scripting en Inno Setup, veo, por ejemplo, que está la función SaveStringsToFile que posiblemente te sirva para añadir la línea deseada al archivo hosts (no lo he probado). Dicha función la usarías, en efecto, en una sección [code] del script de Inno Setup.

// Saludos

roman 04-11-2015 20:16:23

Aquí un ejemplo:

Código Delphi [-]
[code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssDone then
  begin
    if not SaveStringsToFile(ExpandConstant('{sys}\drivers\etc\hosts'), ['127.0.0.1 local'], true) then
      MsgBox('No fue posible agregar la IP', mbInformation, MB_OK);
   end;
end;

// Saludos

Neftali [Germán.Estévez] 04-11-2015 20:25:19

Coincido con Román en que ese comentario hubiera ido bien desde el principio.

Antes de continuar, te recomiendo que si estás trabajando con Inno Setup, te descargues e instalaes la herramienta Inno Script Studio.
Es una herramienta que te facilitará mucho el trabajo para trabajar con os ficheros de Inno (iss) ya que te ofrece una interface gráfica para trabajar con todas esas secciones de los ficheros iss y la multitud de opciones que se pueden utilizar en cada una de ellas.

La sección [INI] sirve para modificar archivos .INI (con ese formato) y el fichero de host no lo es, por lo tanto deberás hacerelo de otra manera.

Segúramente con la opción que te comenta Román.

roman 04-11-2015 20:28:49

Cita:

Empezado por Neftali (Mensaje 498882)
Segúramente con la opción que te comenta Román.

Esta fé ciega levanta el ánimo :D

// Saludos

Zina 04-11-2015 22:49:26

Wow!!

Ustedes si que son expertos en esto jeje, muchas Gracias ya quedó, les agradezco y seguiré por aquí, pidiendo de su ayuda, claro explicando mejor!! :D

Zina 05-11-2015 18:51:35

Hola,
perdon no puedo crear un nuevo tema, ya busqué por todos lados y no sé como hacerle, alguien me puede decir?
Se lo agredeceré mucho, ya me fui a User CP -> nuevo mensaje, pero sólo puedo enviarlo a una sóla persona, quiero hacerlo de nuevo para todos los miembros del foro :(

Gracias

Casimiro Notevi 05-11-2015 19:04:02

Para crear un nuevo tema/hilo debes seleccionar el foro más adecuado al mismo: Varios, Impresión, Firebird, Gráficos, etc. y luego pulsar en el botón de arriba "Nuevo hilo".
El resto es seguir las indicaciones de nuestra guía de estilo, ya lo sabrás: poner un título lo más descriptivo posible sobre la pregunta que vas a hacer, explicar lo más amplia y detalladamente el problema, etc.

Zina 05-11-2015 20:21:49

Muchas Gracias, ya lo hice ! :D


La franja horaria es GMT +2. Ahora son las 04:32:01.

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