Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-03-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jars Ver Mensaje
este es un programa que se ejecuta en cada pc de un call-center para actualizar el archivo .ini que tiene cada una.
Cita:
Empezado por jars Ver Mensaje
Esto lo hace levantando un inifile desde el servidor, que contiene las secciones y variables nuevas para ser actualizadas en las pc's.
Lo que no entiendo es porqué necesitas utilizar un TStringList si tienes un IniOrigen(Servidor) y un IniDestino(de cada PC).
Lee del primero directamente y crea/actualiza en el segundo.

Tienes un métdo para leer todas las secciones del fichero INI del servidor: ReadSections
Y a partir de ahí puedes conseguir todos los valores de cada sección (obtenida con el método anterior): ReadSectionValues

Por lo que he entendido sólo debes recorrer el INI del servidor y copiar los valores en el INI de cada PC.
Se aplica lo mismo de antes:

Código Delphi [-]
procedure UpdateValues(const APathIniOrigen, APathIniDestino:string);
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #2  
Antiguo 23-03-2022
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Poder: 23
jars Va por buen camino
El problema no es leer el inifile del servidor, lo que me falla es la actualizacion de los inifile de las pc's
Te pongo un ejemplo:

INIFILE pc (a actualizar)
[seccion1]
var1=1
var2=2
var3=3

[seccion2]
var21=1
var22=2
var23=3

[seccion3]
var31=1
var32=2
var33=3


INIFILE servidor
[seccion2]
var21=500
var23=600

[seccion3]
var31=1000

No es copiar el contenido del servidor en la pc, es actualizar algunas variables.
Responder Con Cita
  #3  
Antiguo 23-03-2022
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Pon tu código y ¿qué quieres decir con "actualizacion de los inifile de las pc's"?
Responder Con Cita
  #4  
Antiguo 23-03-2022
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Poder: 23
jars Va por buen camino
Este es el codigo:

Código Delphi [-]
procedure UpdateParamsFile;
var
  sl: TStringList;
  lResCU: TServiceCustomAnswer;
  i: Integer;
  lsection: string;
  lvar, lvalue: string;
begin 
  lResCU.Status := 0;
  lResCU.Content := '';
  // este servicio me devuelve el contenido del inifile del servidor
  lResCU := ARService.FileService_GetContentFile('\MainUpd\ParmsUpdate.ini');
  if lResCU.Status <> 200 then
  begin
    Log('@E cannot get the ParmsUpdate.ini file: %s', [lResCU.Content]);
    ShowMessage('No se puedo obtener el archivo: '+lResCU.Content)
  end else
  begin
    // este es el inifile de las pc's
    inifile := TIniFile.Create('c:\WorkDir\Params.ini');
    sl := TStringList.Create;
    sl.Text := lResCU.Content;
    lsection := '';
    lvar := '';
    lvalue := '';
    for i := 0 to sl.Count-1 do
    begin
      if LeftStr(sl[i],1) = '[' then
        lsection := sl[i]
      else
      begin
        lvar := sl.Names[i];
        lvalue := sl.Values[sl.Names[i]];
      end;
      if (lsection <> '') and (lvar <> '') then
      begin
        inifile.WriteString(lsection, lvar, lvalue); // esta linea no actualiza nada en el inifile
        lvar := '';
        lvalue := '';
      end;
    end;
  end;
  sl.Free;
end;
Responder Con Cita
  #5  
Antiguo 23-03-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Siguiendo lo que te he comentado, con un procedimiento como este:

Código Delphi [-]
procedure UpdateValues(const APathIniOrigen, APathIniDestino:string);
var
  IniServidor, iniPC:TIniFile;
  secciones, valores:TStrings;
  i, j:integer;
begin
  IniServidor := TIniFile.Create(APathIniOrigen);
  iniPC := TIniFile.Create(APathIniDestino);
  secciones := TStringList.Create;
  valores := TStringList.Create;
  try
    // Cargar todas las secciones (nombres)
    IniServidor.ReadSections(Secciones);
    // recorrer las secciones...
    for i := 0 to (secciones.Count - 1) do begin
      // Leer los valores de cada sección
      IniServidor.ReadSectionValues(Secciones[i], valores);
      // recorer los valores de cada seccion
      for j := 0  to (Valores.Count - 1) do begin
        // Para cada valor actualizar con el del Servidor (si no existe lo creará, si existe lo actualiza)
        iniPC.WriteString(Secciones[i], valores.Names[j], valores.ValueFromIndex[j]);
      end;
    end;
    // Actualizar el fichero del PC
    iniPc.UpdateFile;
  finally
    IniServidor.Free;
    IniPC.Free;
  end;
end;

Si lo llamas de la siguiente manera:

Código Delphi [-]
UpdateValues('\MainUpd\ParmsUpdate.ini', 'c:\WorkDir\Params.ini');

El resultado será algo así (que creo que es lo que necesitas):

Código:
[seccion1]
var1=1
var2=2
var3=3

[seccion2]
var21=500
var22=2
var23=600

[seccion3]
var31=1000
var32=2
var33=3
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 23-03-2022
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Poder: 23
jars Va por buen camino
German, es tal cual lo que necesitaba.
Muchas gracias
Responder Con Cita
  #7  
Antiguo 24-03-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Ya se que a veces cuesta hacerlo desde el inicio, pero una vez que has puesto los ejemplos y has explicado un poco mejor el problema, era fácil de entender y fácil de solucionar.


Por eso lo engo puesto...

__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Actualizar una tablas desde un archivo de texto. rg5820 Firebird e Interbase 3 07-08-2018 10:18:30
Actualizar archivo marilinspi Varios 11 05-03-2009 15:43:25
Variables en Archivo _TLB Paulao Varios 0 15-07-2008 19:38:47
Actualizar Tabla con archivo .txt bohemioloco Conexión con bases de datos 1 07-11-2006 15:46:24
variables variables (manual php) salvica PHP 0 25-09-2005 16:44:52


La franja horaria es GMT +2. Ahora son las 22:53:31.


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