Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Verificar La Identidad E Integridad De Un Archivo?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Verificar La Identidad E Integridad De Un Archivo? 
 
buenas...

buscando la seguridad y estabilidad en un programa en este caso en VisorRV1960

tenemos unos archivos con extensión .lv  (lista versiculos)

la idea es verificar si es el archivo correspondiente y si la integridad del archivo esta bien

por ejemplo la identidad parece facil si no tiene extension .lv  rechazamos la operacion e informamos

pero que pasa si es .lv y el archivo adentro no tiene el formato correcto?

el formato correcto es este.

Genesis 2:1
Genesis 2:2
Genesis 2:3
Exodo 16:22
Exodo 16:23
Lucas 4:17
Lucas 23:54
Lucas 23:55
Lucas 23:56
Hechos 13:14
Hechos 13:15
Hechos 13:42

un formato corrompido podría ser este:

Genesis 2:1,
Genesis 2:2,
Genesis 2:3,
Exodo 16:22,
Exodo 16:23,
Lucas 4:17,
Lucas;23:54
Lucas 23:55
Lucas 23:56a
Hechos 13:14
Hechos 13:15
Hechos 13:42

Que métodos usarían ustedes para comprobar la integridad de este archivo .lv?

analizando elementos de comprobación pudiendo elegir todos o algunos de ellos mas lo que ustedes puedan aportar:

si la primera linea esta vaciá rechazamos e informamos (*ri)

si no esta vaciá spliteamos con espacio y si no es igual a dos el count del array  *ri

tomamos el segundo elemento del array y spliteamos con :  si los elementos tienen caracteres que no sean numero *ri

así etc...

que opinan gamberos?
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Verificar La Identidad E Integridad De Un Archivo? 
 
bueno en principio arranque con esto:
' gambas module file

Public Sub Integridad(ruta As String) As Boolean
  
  Print File.Ext(ruta)
  
  If File.Ext(ruta) = "lv" Then
    If FormatoLV(ruta) Then
      Return True
    Else
      Return False
    Endif
  Else
    Message.Error(ruta & gb.NewLine & "No es un archivo de lista .lv!")
    Return False
  Endif
  
End

Private Sub FormatoLV(ruta As String) As Boolean
  Dim FileLv As File
  Dim linea As String
  Dim Respuesta As Boolean = True
  Dim NumLinea As Integer = 1
  
  Print "FormatoLV ruta=" & ruta
  
  FileLv = Open ruta For Input
  
  While Not Eof(FileLv)
    Line Input #FileLv, linea
    Print "Linea--->" & linea
    Print "Len(linea)=" & Len(linea)
    
    If Not InStr(linea, gb.Cr) = 0 Then Replace(linea, gb.Cr, "")
    
    If Trim(linea) = "" Then
      Message.Error("Archivo corrupto en linea " & NumLinea)
      Respuesta = False
      Break
    Else If Len(linea) < 8 Then
      Message.Error("Archivo corrupto en linea " & NumLinea)
      Respuesta = False
      Break
    Endif
    
    Inc NumLinea
  Wend
  
  Return Respuesta
  
End

 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Verificar La Identidad E Integridad De Un Archivo? 
 
bueno encontre una forma de optimizar el código y usar Goto que nunca lo he usado.

' gambas module file

Public Sub Integridad(ruta As String) As Boolean
  
  Print File.Ext(ruta)
  
  If File.Ext(ruta) = "lv" Then
    If FormatoLV(ruta) Then
      Return True
    Else
      Return False
    Endif
  Else
    Message.Error(ruta & gb.NewLine & "No es un archivo de lista .lv!")
    Return False
  Endif
  
End

Private Sub FormatoLV(ruta As String) As Boolean
  Dim FileLv As File
  Dim linea As String
  Dim NumLinea As Integer = 1
  Dim Dividir As New String[]
  
  FileLv = Open ruta For Input
  
  While Not Eof(FileLv)
    Line Input #FileLv, linea
    Print "Linea--->" & linea
    Print "Len(linea)=" & Len(linea)
    
    Dividir = New String[]
    Dividir = Split(linea, " ")
    
    If Not InStr(linea, gb.Cr) = 0 Then Replace(linea, gb.Cr, "")
    
    If Trim(linea) = "" Then 'si la linea esta vacía rechazamos
      Goto CORRUPTO
    Else If Len(linea) < 8 Then 'si hay 7 caracteres o menos rechazamos
      Goto CORRUPTO
    Else If InStr(Trim(linea), " ") = 0 Then 'si no hay un espacio entre caracteres rechazamos
      Goto CORRUPTO
    Else If Dividir.Count <> 2 Then 'si separando con espacio quedan elementos diferentes a 2 rechazamos
      Goto CORRUPTO
    Else If InStr(Dividir[1], ":") = 0 Then 'si en el segundo elemento no hay : rechazamos
      Goto CORRUPTO
    Endif
    
    Inc NumLinea
  Wend
  
  Return True
  
  CORRUPTO:
  
  Message.Error("Archivo corrupto en linea " & NumLinea)
  Return False
  
End

 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Verificar La Identidad E Integridad De Un Archivo? 
 
Yo para lo que tu quieres, recurriría a una cabecera específica para tu archivo.

Veo que usas texto plano para guardar datos, aunque también podrías haber recurrido a guardar datos en binario, por ejemplo arrays directamente. Si os interesa esto, puedo explicarlo en otro post.

Bueno, a lo que iba. Como lo que guardas es texto plano, lo más fácil es escribir una cabecera en la primera línea comenzando por un caracter '#' que es típico que se usa para comentar, y a continuación puedes poner una descripción y un número de versión. De esa manera lees la primera línea y obtienes la información y la versión y decides si es compatible. Si es compatible, entonces puedes hacer algún otro check, pero si no lo es, avisas y ya está y no sigues leyendo el fichero.

Hay muchas formas de hacerlo, la que he explicado es solo una de ellas.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Verificar La Identidad E Integridad De Un Archivo? 
 
jguardon escribió: [Ver mensaje]
Yo para lo que tu quieres, recurriría a una cabecera específica para tu archivo.
Veo que usas texto plano para guardar datos, aunque también podrías haber recurrido a guardar datos en binario, por ejemplo arrays directamente. Si os interesa esto, puedo explicarlo en otro post.  


Si, estaría bueno que explicaras eso de guardar datos en binario

jguardon escribió: [Ver mensaje]

Bueno, a lo que iba. Como lo que guardas es texto plano, lo más fácil es escribir una cabecera en la primera línea comenzando por un carácter '#' que es típico que se usa para comentar, y a continuación puedes poner una descripción y un número de versión. De esa manera lees la primera línea y obtienes la información y la versión y decides si es compatible. Si es compatible, entonces puedes hacer algún otro check, pero si no lo es, avisas y ya está y no sigues leyendo el fichero.


Esto que propones no garantiza en absoluto que todos los datos del archivo estén correctos, si te fijas en la rutina de arriba se revisa cada párrafo que equivale a un nombre de versículo, espacio, número de capítulo, dos puntos y el número de versículo. Cualquiera de estos datos que este mal se rechaza el archivo.

Saludos
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Verificar La Identidad E Integridad De Un Archivo? 
 
v3ctor escribió: [Ver mensaje]
esto que propones no garantiza en absoluto que todos los datos del archivo estén correctos, si te fijas en la rutina de arriba se revisa cada párrafo que equivale a un nombre de versículo espacio numero de capitulo dos puntos y el numero de versículo. Cualquiera de estos datos que este mal se rechaza el archivo


Claro, eso es evidente. Como he dicho, antes de realizar tus verificaciones sobre la integridad, compruebas que es fichero es al menos lo que parece. De esa forma, ahorras algo de esfuerzo antes de comprobar los datos en sí mismos. Pero como la idea en principio me viene del uso de ficheros binarios, es posible que para ficheros de texto no valga la pena.

Mañana si encuentro un momento, escribo algo sobre almacenar ficheros binarios a partir de arrays y de cómo volver a leerlos después. Interesante lo de las cabeceras propias, igual que las tiene cualquier binario, donde almacenar metadatos.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Integridad Referencial Con SQLite abarzuaf Bases de Datos 2 Miercoles, 27 Enero 2010, 20:33 Ver último mensaje
abarzuaf
No hay nuevos mensajes Verificar Encriptación aristicol Aplicaciones/Fragmentos de Código 3 Viernes, 02 Julio 2010, 02:46 Ver último mensaje
aristicol
No hay nuevos mensajes Verificar Campos De Tablas Fenriz07 Bases de Datos 4 Domingo, 15 Agosto 2010, 14:34 Ver último mensaje
netking86
No hay nuevos mensajes Ejemplo De Mantenimiento De Una Tabla Mant... shordi Aplicaciones/Fragmentos de Código 2 Domingo, 20 Noviembre 2016, 18:56 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron