Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 18-01-2007
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: 18.275
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 Deiv
¿Los INIs no son vulnerables y propensos a ser cambiados, editados o alterados? Esto podría ocasionar que la Aplicación funcione mal verdad?
Yo diría que son más accesibles.
Vulnerable, no se. Tan fácil es abrir el INI con el notepad, como abrir el EXE con el notepad. Si cambias algo y grabas, en ambos casos dejará de funcionar.

Cita:
Empezado por Deiv
¿Se puede encriptar o no tendría sentido de INI? ¿Cómo protegerlo?
En este caso no puedes ya que no es un fichero que esté manejando tú, sino que lo maneja la aplicación.
Creo que no tiene sentido proteger este fichero. Si alguien lo toquetea la aplicación funcionará mal, pero es que si borran el EXE también funcionará mal, y si cambian el Datos.txt también y si borran cualquiera de ellos también,...
__________________
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
  #22  
Antiguo 18-01-2007
oregon oregon is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
oregon Va por buen camino
Otra variante

Cita:
Empezado por Deiv
Vaya!
Hasta que al fin utilizaré mi primer INI desde que programo. Gracias Neftali.

¿Los INIs no son vulnerables y propensos a ser cambiados, editados o alterados? Esto podría ocasionar que la Aplicación funcione mal verdad? ¿Se puede encriptar o no tendría sentido de INI? ¿Cómo protegerlo?
Lo del fichero *.ini me parece una buena idea. Sin embargo...

Un posibilidad que me gustaría consultaros, y que creo que podría ser, en parte, la solución para el problema que plantea aquí Deiv, es la de generar el fichero *.ini al iniciar el programa, y que se borre al cerrarlo.

Me explico, con la solución, tal y como está ahora, se distribuye el fichero *.ini con la aplicación, y como dice Deiv, la pueden cambiar (accidentalemente o por malas artes). Encriptarlo o protegerlo creo que requiriría muchas líneas de código, y no es un material tan "privado" que merezca la pena, ¿no? Tal y como dice Neftali...

Cita:
Empezado por Neftali
Creo que no tiene sentido proteger este fichero. Si alguien lo toquetea la aplicación funcionará mal, pero es que si borran el EXE también funcionará mal, y si cambian el Datos.txt también y si borran cualquiera de ellos también,...
La solución que planteo (y que no se si es fácil de hacer), es crear, por código, un fichero *.ini en el directorio donde esté en ese momento la aplicación, con las dos o tres líneas que necesitemos. Así nos aseguramos que esté configurado como esté configurado el ordenador de cada usuario, nuestro ficheros se creen y se abran siguiendo una determinada configuración.
Por otra parte, al salir, se puede eliminar el fichero por código, así quitamos basurilla al equipo del usuario, no dejamos pistas, y no modificamos su configuración personal. Además es más facil de distribuir la aplicación final, porque sólo con el ejecutable sirve.
Por si fuera poco, aunque toquiteen el fichero *.ini mientras corre la aplicación, ya no importará. Además, será borrardo y generaremos uno nuevo y correcto cuando volvamos a ejecutar el programa.

No hablo por experiencia, pero creo que no es complicado generar ese fichero, ya que es un fichero de texto plano ascii, con una extensión de terminada. Y para borrarlo... como sabemos donde esta y como se llama, creo que tampoco debería ser mucho problema.

Bueno, creo que me he extendido demasiado. Pero ahí dejo la idea (o la tontería, que juzguen los expertos ).

Suerte!

Última edición por oregon fecha: 18-01-2007 a las 15:50:21.
Responder Con Cita
  #23  
Antiguo 18-01-2007
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: 18.275
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 oregon
...ahí dejo la idea (o la tontería, que juzguen los expertos
No me parece en absoluto una tontería. Con un memo, propiedad Visible a False y el texto dentro, con una línea podemos generar el fichero.

Código Delphi [-]
  // Grabar en el evento OnCreate.
  Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName) + 'Schema.INI');

Similar para borrarlo al salir.
__________________
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
  #24  
Antiguo 18-01-2007
oregon oregon is offline
Miembro
 
Registrado: oct 2006
Posts: 90
Poder: 18
oregon Va por buen camino
Me alegra saber que no era una tontería.

Por otra parte, y con la idea de Neftali de usar un Memo, se puede complicar la cosa y dar opciones al usuario, permitiéndole que elija, mientras corre la aplicación, entre separar por comas, punto y coma, comillas, guiones,... Simplemente se puede cambiar el contenido del memo con lo que elija el usuario, y se vuelve a generar el fichero *.ini con la nueva configuración.

Otra utilidad que se me ocurre aplicando la idea de Neftali es permitir al usuario importar ficheros con otro tipo de separadores. Por ejemplo, nuestra aplicación abre ficheros separados por ";", pero resulta que nos envian, conseguimos o lo que sea un fichero exportado de excell con ",". De esta manera, se puede seleccionar el separador, regenerar un *.ini, cargar el fichero y volver a las opciones iniciales. Es más complicado, pero por ideas que no quede.

Por curiosidad... ¿cómo se haría para borrarlo?
Responder Con Cita
  #25  
Antiguo 18-01-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Si únicamente se requiere configurar el separador, yo mejor optaría por alterar por código esa entrada del registro y restaurarla al terminar.

// Saludos
Responder Con Cita
  #26  
Antiguo 18-01-2007
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: 18.275
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 oregon
¿cómo se haría para borrarlo?
Delphi ya tiene implementada la función DeleteFile; El nombre del fichero es el mismo de antes.
__________________
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
  #27  
Antiguo 18-01-2007
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: 18.275
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
Personalmente prefiero no trastear en el Registro. Primero porque me es más incómodo y segundo, porque me he encontrado ya varias veces, que segun cómo estén configurados los usuarios en los sistemas windows, no tienen permisos para leer y/o escribir en el registro.

También he de decir que en TS, también me han dado problemas de acceso los ficheros .INI; Al final tuvimos que renombrarlos a ".ISI"
__________________
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
  #28  
Antiguo 18-01-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Creo que ando medio dormido. ¿Qué es TS?

// Saludos
Responder Con Cita
  #29  
Antiguo 18-01-2007
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: 18.275
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 Neftali
...que en TS


Perdón, que no se en qué estaba pensando. Con TS me refería a Terminal Server (que es como a menudo trabajamos), pero eso no tiene nada que ver con lo que hablábamos. Los permisos de los usuarios, son los permisos en todos sitios.
__________________
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
  #30  
Antiguo 03-12-2010
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
buenas

se que ha pasado algun tiempo desde el ultimo post, pero tengo un problema muy similar que me seria de gran utilidad si alguien me puede ayudar...

se trata de un archivo txt,
1. La informacion no esta seaparada por ningun tipo de delimitador,
2. Todas las lineas tienen un largo de 200 caracteres,
3. La primera (datos especificos de identificacion del archivo)y la ultima linea (datos de cierre) tienen la misma longitud pero hacen referencia a 2 tablas diferentes, con campos diferentes, todas las lineas de en medio(minimo 1) hace referencia a un detalle...
4. El encabezado esta compuesto por 4 valores de 50 de longitud cada uno
5. Los detalles(lineas de en medio) estan compuestos por 10 valores de de 10 de largo cada uno.
6. El detalle de cierre esta compuesto por 5 valores de 40 de longitud cada uno


No existe nigun problema en que se divida en 3 diferentes grid a la hora de presentar la informacion, y luego debo ingresar esos valores a 3 tablas de bases de datos correspondientes, pero una vez teniendolas en un dbgrid, eso eslo de menos...

el problema es que aun no logro vizualizar una manera de ahcerlo, aunque este tema me ha sido de mucha utilidad, para por lo menos tener una idea de como poder empezar, pero me trabe en el uso de

Código Delphi [-]
[Test.txt]
Format=FixedLength

Col1=PrimeraColumna Text Width 50
Col2=SegundaColumna Text Width 50
Col3=TerceraColumna Text Width 50
Col4=CuartaColumna Text Width 50

Pero es solo me serviria para la primera fila (encabezado)...

estoy tirando lineas, para ver como podria resolverlo, pero agradesco muchisimo cualquier ayuda
Responder Con Cita
  #31  
Antiguo 03-12-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Así leido un poco rápido, me parece que no tienes de otra que separar el archivo en encabezado y detalles y tratar cada uno como aquí se indica.

// Saludos
Responder Con Cita
  #32  
Antiguo 03-12-2010
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
???

puedo tener mas de un 'Schema.INI'?
Responder Con Cita
  #33  
Antiguo 03-12-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No, no. A eso me refiero. Tendrías que separar el archivo original en varios y usar un schema para cada uno. Quizá no estoy entendiendo bien. ¿Podrías poner un ejemplo de datos?

// Saludos
Responder Con Cita
  #34  
Antiguo 03-12-2010
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
aca esta

Lo modifique para variar su tamano y que sea mas facil de visualizar

Cita:
E00000001ARCHIVOGWESSITCR0204200900130.......................................
D00000002000000000376678303661028GTHPG0000025000000111111111111
D00000034000000004000000000004418GTHPG0000000000105936050012312
F000000350000000000006174300000003302042009.................................
Basicamente la primera linea es el encabezado
siguen los detalles que podrian ser N
y un Final...

cada linea es de 200 caracteres origianlmente y se parsea segun corresponde al detalle,encabezado o final...

ya lo parseo bien con los detalles, pero como el ancho de columna no es la misma para todos los campos, debo parsear el tamano por aparte para el encabezado y para el final...

Última edición por Wbarrantes fecha: 03-12-2010 a las 19:01:47. Razón: no se veia completo
Responder Con Cita
  #35  
Antiguo 22-02-2011
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
ok ya logre solventar mi problema
1. Trabajo un archivo definido por columnas separada por tabuladores..
2. Estoy trabajando con Delphi 2010...
3. Ingreso los datos depues de realizar varias operaciones, a una base de datos


pero tengo un pequeno gran problema, necesito abrir el archivo de Datos de un fichero que el usuario me indique, y no de un fichero fijo...

osea en lugar de que sea DATOS.txt utilizar un open dialog

Cita:
//****************************************
OpenDialog1.Filter:='Datos (*.txt)|*.txt';
if OpenDialog1.Execute then
begin
if OpenDialog1.FileName <> emptystr then
begin
ADOTable1.Active := False;
ADOTable1.TableName:= OpenDialog1.FileName;
ADOTable1.Active := True;

end;
end;
//*****************************************
pero solo lo carga correctamente cuando utilizo un archivo que este dentro de la misma carpeta y con el nombre DATOS.txt…


cuando lo cargo de esta manera no me respeta las columnas, el separador ni nada de lo que contiene el archivo schema.txt

podria venir por el lado del encabezado delfichero schema [datos.txt]...
es correcto? como podria variarlo? no daria problemas por que lo cargo en el form create?

Última edición por Wbarrantes fecha: 22-02-2011 a las 19:40:59. Razón: el problema es?
Responder Con Cita
  #36  
Antiguo 22-02-2011
Avatar de Wbarrantes
Wbarrantes Wbarrantes is offline
Miembro
 
Registrado: ago 2010
Posts: 119
Poder: 14
Wbarrantes Va por buen camino
buenas

ya resolvi mi problema... apunto el codigo por sialguien se le presenta una situacion similar

Código Delphi [-]
procedure TFormMain.cargar_archivo();
  var
  TSTR_Archivo:tstringlist;
begin
  TSTR_Archivo:=  tstringlist.Create;
//****************************************
 OpenDialog1.Filter:='Datos (*.txt)|*.txt';
  if OpenDialog1.Execute then
  begin
    if OpenDialog1.FileName <> emptystr then
    begin
      STR_FILE_NAME := OpenDialog1.FileName;
// debe encuentrarse el archivo  schema en la misma carpeta del exe
      TSTR_Archivo.LoadFromFile(GetCurrentDir + '\Schema.ini');
// modifico la primera linea del schema
      TSTR_Archivo[0] := '['+ ExtractFileName( OpenDialog1.FileName) +']' ;
// guardo el archivo
      TSTR_Archivo.SaveToFile(GetCurrentDir + '\Schema.ini');
 
//bajo el ADO para aplicar un cambio
      ADOTable1.Active := False;
//remplazo el tablename
      ADOTable1.TableName:= STR_FILE_NAME  ;
//vuelvo aactivar para que surja efecto
      ADOTable1.Active := True;
// aqui para abajo lo que quiera hacer
      showmessage('mi codigo ahora');

    end;
  end;

espero les sea de beneficio,y pos que sirva como una incorporacion al codigo de Neftali...
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
Actualizar datos de una base de datos en un reporte Marymania Impresión 4 27-11-2006 19:47:32
Añadir datos desde una base de datos a un TListBox proyecto Conexión con bases de datos 1 21-11-2006 07:01:19
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 11:56:33
ubicar archivo, con datos sacados de base de datos Giniromero Varios 19 20-10-2005 16:23:02
Reto Para Expertos En Base De Datos Y Tipos De Datos.... (blob) frankmch Conexión con bases de datos 2 08-09-2003 19:44:52


La franja horaria es GMT +2. Ahora son las 17:04:22.


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