Seguros de responsabilidad civil y sanciones LOPD

La responsabilidad civil de empresas tecnológicas.

Cuando se tiene una empresa de tecnología o se es un programador por cuenta propia hay que tener muy en cuenta que como consecuencia del ejercicio de la actividad, tus clientes o sus empresas pueden tener reclamaciones de sus propios clientes o pueden tener que cesar en su actividad de forma temporal, por lo que es muy importante contar con una póliza de Responsabilidad Civil para cubrir los posibles perjuicios ocasionados a tercerosCon esto aseguras a tus empleados, en caso de que los tengas y a tus herederos o representantes legales en caso de que hayas fallecido cuándo se produzca la reclamación.

Considera la cantidad que te podrían reclamar por daños y perjuicios tus clientes por los miles de horas de trabajo perdidas en subsanar los fallos de programación (hay empresas que de manera intencionada ponen en el mercado productos sin testar, vendiendo posteriormente packs de soporte técnico y actualizaciones)

Un seguro de responsabilidad civil para programadores de software debería cubrir los gastos de defensa jurídica y las indemnizaciones a las que se deba hacer frente para compensar el perjuicio ocasionado a terceros por el desarrollo de tu actividad profesional como cobertura básica, y opcionalmente puede llegar a cubrir la responsabilidad civil de explotación, la responsabilidad civil patronal, la derivada de la infidelidad de empleados, infracciones de propiedad intelectual y de LOPD, pérdida de documentos, entre otros; así como el pago de un subsidio en caso de inhabilitación profesional.

Si tu empresa se dedica a mantener datos de tus clientes y/o información confidencial de los mismos en la red, debes saber que tienes obligación legal de proteger esta información, una fuga de información podría acarrear a la empresa multas por parte de organismos reguladores de todo el mundo.

Riesgos que cubre un seguro de responsabilidad civil para empresas tecnológicas


Según una gran empresa aseguradora española podrían ser los siguientes:

- Perjuicios patrimoniales primarios

- Perjuicios consecutivos a un trabajo o producto defectuoso.

- Retrasos accidentales en entregas de productos prestaciones.

- Daños provocados por actos informáticos malintencionados, virus…

- Gastos de reconstitución de documentos y material informático perdido…

- Violación de propiedad intelectual.

- Infidelidad de empleados.

- Reemplazo de colaboradores.

- Una protección para la empresa frente a reclamaciones de terceros por causas de distinta índole. De especial connotación son los daños personales que se derivan como consecuencia de un incendio del centro,  etc.

- Infracciones de la ley de propiedad intelectual y de la LOPD

Sanciones que conllevaría el no cumplimiento de la LOPD




Sanciones leves


Las infracciones leves por incumplimiento de la LOPD conllevan sanciones comprendidas entre 900 y 40.000 Euros por:

No remitir a la Agencia Española de Protección de Datos las notificaciones previstas en esta ley o en sus disposiciones de desarrollo.

No solicitar la inscripción del fichero de datos de carácter personal en el Registro General de Protección de Datos.

El incumplimiento del deber de información al afectado acerca del tratamiento de sus datos de carácter personal cuando los datos sean recabados del propio interesado.

La transmisión de los datos a un encargado del tratamiento sin dar cumplimiento a los deberes formales establecidos en el articulo 12 de esta ley.



Sanciones Graves


Las infracciones Graves por incumplimiento de la LOPD conllevan sanciones comprendidas entre 40.001 y 300.000 Euros por:

Proceder a la creación de ficheros de titularidad pública o iniciar la recogida de datos de carácter personal para los mismos, sin autorización de disposición general, publicada en el "Boletín Oficial del Estado" o diario oficial correspondiente.

Tratar datos de carácter personal sin recabar el consentimiento de las personas afectadas, cuando el mismo sea necesario conforme a lo dispuesto en esta Ley y sus disposiciones de desarrollo.

Tratar datos de carácter personal o usarlos posteriormente con conculcación de los principios y garantías establecidos en el Articulo 4 de la presente Ley y las disposiciones que lo desarrollan, salvo cuando sea constitutivo de infracción muy grave.

La vulneración del deber de guardar secreto acerca del tratamiento de los datos de carácter personal al que se refiere el artículo 10 de la presente Ley.

El impedimento o la obstaculización del ejercicio de los derechos de acceso, rectificación, cancelación y oposición.

El incumplimiento del deber de información al afectado acerca del tratamiento de sus datos de carácter personal cuando los datos no hayan sido recabados del propio interesado.

El incumplimiento de los restantes deberes de notificación o requerimiento al afectado impuestos por esta ley y sus disposiciones de desarrollo.

Mantener los ficheros, locales, programas o equipos que contengan datos de carácter personal sin las debidas condiciones de seguridad que por vía reglamentaria se determinen.

No atender  los requerimientos o apercibimientos de la Agencia Española de Protección de Datos o no proporcionar a aquella cuantos documentos e informaciones sean solicitados por la misma.

La obstrucción al ejercicio de la función inspectora.

La comunicación o cesión de los datos de carácter personal sin contar con legitimación para ello en los términos previstos en esta ley y sus disposiciones reglamentarias de desarrollo, salvo que la misma sea constitutiva de infracción muy grave.



Sanciones muy Graves


Las infracciones Muy Graves por incumplimiento de la LOPD conllevan sanciones comprendidas entre 300.001 y 600.000 Euros por:

La recogida de datos en forma engañosa o fraudulenta.

Tratar o ceder los datos de carácter personal a los que se refieren los apartados 2, 3 y 5 del artículo 7 de esta Ley salvo en los supuestos en que la misma lo autoriza, o violentar la prohibición contenida en el apartado 4  del artículo 7.

No cesar en el tratamiento ilícito de datos de carácter personal cuando existiese un previo requerimiento del Director de la Agencia Española de Protección de Datos para ello.

La transferencia internacional de datos de carácter personal con destino a países que no proporcionen un nivel de protección equiparable sin autorización del Director de la Agencia Española de Protección de Datos salvo en los supuestos en los que conforme a esta Ley y sus disposiciones de desarrollo dicha autorización no resulta necesaria.



Componentes para proyectos de ciencia con Delphi


La Suite de Componentes SDL  es una colección de componentes de apoyo al cálculo científico y de ingeniería. Todo el conjunto se compone de alrededor de 50 unidades que cubren una amplia gama de necesidades de la ciencia y la ingeniería. El conjunto de componentes está disponible tanto para Delphi ™ y C ++ Builder ™.


Plot Your Data in 3DRChart - Scientific DiagramsRotate Your Data in 3DStatistics
Fast Fourier TransformVU MeterPolar DiagramsMath/Curve Fitting



Algunos aspectos destacados:
  • 160000+ líneas de código fuente Pascal nativa
  • libre Light Edition - ideal para la educación y proyectos de software pequeños
  • combinación única de algoritmos científicos con capacidades para gráficos técnicos
  • unos 80 ejemplos de aplicación que se pueden utilizar como punto de partida para sus propios programas
  • actualizaciones ilimitadas (Standard Plus y Professional Edition)
  • archivo de ayuda  (más de 4.000 páginas, 300 figuras)
  • sin royalties por sus productos compilados - vea acuerdo de licencia


    Las siguientes palabras clave cubren sólo una parte de la suite SDL componentes y están destinadas a darle una impresión rápida de su potencia.

    Rotación 3D de los datos, 3D trama de datos, matrices asociativas, atlas, símbolos atómicos, función beta, diagramas decaja, botón, las imágenes escaneadas calibrados, número CAS del registro, gráficos, casillas de verificación, de conversión de color, selección de color, números complejos, constantes y conversión factores, parcelas de contorno, casco convexo,medición de velocidad de la CPU, estructuras químicas, datos químicos, fórmulas químicas, distribución chi-cuadrado,clustering, rutinas de conversión, ajuste de curvas, de bases de datos de información geográfica, estructura tabla de datos,determinante de una matriz, dendrogramas, diagramas , directorios, distribuciones, etiquetas de matriz de puntos, vectorespropios, F-distribución, FFT (Fast Fourier Transform), FIFO, diagramas de caja, archivo y el disco de acceso, la función gamma, calibrador, atlas geográficos, mapas geográficos, relleno de degradado, grep, mayor de matemáticas , basado en HTML etiqueta, entidades HTML, isótopos, red neuronal de Kohonen, KNN (vecinos más cercanos k), etiquetas que activan el navegador Web, la vista de lista, mapas, expresión matemática analizar, matrices, los datos de medición, la pantalla del medidor, MMR (regresión lineal múltiple ), fórmulas moleculares, redes neuronales, distribución normal, entrada numérica,etiquetas numéricas, editor de tablas numéricas, tabla periódica de elementos, diagramas polares, PCA (análisis de componentes principales), barras de progreso, cuantiles de la distribución, botones de radio, generadores aleatorios,regresión, RLE (codificación ejecutar longitud), etiquetas giratorios, la rotación de los datos, escalas, carta científica,pantallas enrollables, display de siete segmentos, diapositivas, carta de Smith, alisando, estrías, SOM, de ordenación dematrices, se extendió la hoja, estadísticas, recta líneas, arroyos, matriz de cadenas, manejo de cadenas, parcela de superficie de los datos, SVD (descomposición de valor sigular), selección de símbolos, la distribución t, t-test, tablas detexto, imágenes en miniatura, de diálogo guardar universales, ID único procesador, electrones de valencia, ondas, vectores,visualización de datos, indicador de volumen
Aunque es de pago tiene una versión gratuita "La versión Light"



La SDL Component Suite / LE (Light Edition) es una versión restringida de la edición comercial de la SDL Component Suite. Se ofrece de forma gratuita con fines privados y educativos, y con eso obtiene la potencia de un paquete profesional sin costo.



¿Cuáles son las restricciones de la Versión Light?

En general, existen tres tipos de restricciones: (1) Algunos componentes no deben exceder un tamaño máximo (es decir, una matriz del tipo TMatrix se limita a un máximo de 2.000 elementos). (2) Unos pocos componentes no están disponibles. (3) Algunas funciones y métodos no están disponibles. En general, el objetivo de la edición de Light es proporcionar toda la funcionalidad que necesita para aprender a escribir programas para la ciencia y la ingeniería. 

¿Tengo que pagar ninguna cuota para el uso de la Edición Luz?
No, no  - siempre y cuando usted no gane nada de dinero o reciba otros beneficios materiales a partir de los programas que utilizan la suite SDL / LE.

¿Cómo puedo cambiar a la edición comercial de la SDL Component Suite?
Basta con comprar una licencia. La licencia es una cuota única que le da derecho a utilizar la Suite SDL de forma gratuita en sus programas. Las licencias están disponibles para los paquetes individuales y en diferentes niveles.

¿Cómo puedo evaluar aquellos componentes que no esté incluido en la Edición de luz?
Usted debe obtener los programas de ejemplo que siempre contienen un ejecutable que se ha compilado utilizando la versión comercial. Además, hay información detallada sobre todos los componentes de la suite SDL en el archivo de ayuda.

TGmailLabel un ejemplo de componente Firemonkey personalizado

 Por Andrea Magni

Para mi conferencia "estilos FireMonkey" de ITDevCon 2013, me han preparado algunos ejemplos prácticos. Un ejemplo de ello es un nuevo componente visual (derivado de TStyledControl) con un estilo gráfico que imita el aspecto de las etiquetas de Gmail. El ejemplo está destinado a mostrar cómo:


  • componer un estilo utilizando el IDE de Delphi;
  • crear un nuevo componente derivado de TStyledControl;
  • complementar el estilo del componente en los recursos del ejecutable;
  • instalar el componente en el IDE de Delphi, de modo que esté disponible en tiempo de diseño.

Es necesario familiarizarse con los nuevos conceptos de diseño (en comparación con el mundo VCL), es relativamente fácil crear un nuevo componente visual que puede ser utilizado en todas las plataformas soportadas actualmente (con Delphi XE5: . Windows, Mac OS, iOS y Android) Las diapositivas preparé para mi presentación en ITDevCon ofrece una breve introducción a FireMonkey, la nueva plataforma de aplicaciones presente en las últimas versiones de Delphi (XE2 -. XE5) Uno de los conceptos básicos es el "estilo": que implementa el aspecto visual de un componente derivado de FM TStyledControl En términos más simples, Los componentes visuales de FireMonkey pueden ser "formas simples" (líneas, rectángulos, formas geométricas, texto ...) o "complejos" (el resultado de la composición de otros objetos). Aquí haremos un estilo de composición uniendo los componentes que producen las características visuales de un componente "complejo".



Marque el estilo visual

Un estilo es en sí mismo es un objeto FM (una instancia de TFmxObject) y su representación textual no es diferente de la utilizada en los archivos .fmx desde el diseñador de formularios IDE, que se utiliza para cargar los objetos en tiempo de ejecución que componen un form FM (de manera similar a lo que sucede con los archivos .dfm de forma VCL).

Visualmente los estilos de edición del IDE nos proporciona una herramienta específica, similar a la del diseñador de formularios, llamado "Diseñador de estilo". Se puede ver haciendo doble clic sobre un componente TStyleBook y junto al Inspector de Objetos y la paleta de componentes, también le permite manipular los elementos de estilo y también  cargar / guardar archivos de estilos  de FireMonkey  .

El IDE de Delphi XE5 abierto el diseñador de estilos

Por desgracia, esta herramienta está todavía sufriendo de algunos problemas y, a veces puede ser un poco "difícil de usar. Para evitar esto, se puede ir a otra ruta y utilizar el diseñador de formularios para componer, cualquier form de "ayuda", a la parte visual del componente. 

El Diseñador de formularios IDE Delphi XE5

Cuando haya terminado, gracias a la compatibilidad del formato utilizado en los estilos y la utilizada en el archivos .fmx de la forma, sólo pide el IDE mostrar el form en modo texto (botón derecho -> "Ver como texto") y copia -pegar nuestra composición del form a un archivo de texto (.style extensión).

La representación textual del form de "apoyo"

Después de hacer algunos cambios simples (como la eliminación de todos los nombres de los componentes que hay), el archivo será perfectamente compatible y podrá ser utilizado como una definición de estilo para nuestro componente.

El estilo, consiguió "limpiar" la representación textual de nuestro diseño

Ahora podemos incluir el contenido del arcivo .style entre los recursos de nuestro ejecutable binario, y hacer uso de ella en tiempo de ejecución; preparar otro archivo de texto con la extensión .rc y solicitar la inclusión del archivo con los nombres que se asignarán a los recursos relacionados. 

El contenido del archivo GMailLabel.rc

Cuando el IDE procese este archivo, se generará un archivo que contiene el recurso .res "GMailLabelstyle" que (gracias a una directiva especial en el archivo de origen del componente) completado se incluirá en el ejecutable.

El código de componente

Una vez preparado el recurso que contiene la definición de estilo que se aplicará al componente, sólo tenemos que crear la clase del componente.
He utilizado el asistente para crear los componentes (IDE de Delphi, del menú Archivo -> Nuevo -> Otros -> archivos de Delphi -> Componentes). NB: El código fuente completo está disponible en el enlace que aparece en la sección Los materiales de este artículo.

Básicamente he creado un componente heredado de TStyledControl  y anulé algunos de los métodos fundamentales para la gestión de estilos, incluyendo 
  1. procedimientos ApplyStyle;
  2. funcionar GetStyleObject (const Clon: Boolean): TFmxObject; 
que pertenecen a:
  1. ejecutar código de conexión entre los elementos de estilo, y los datos del componente (. ej puse la propiedad Text del componente Texto a SI que muestra el valor de la propiedad LabelName);
  2. De vuelta, cargué los recursos del ejecutable,  y el estilo de objeto que hay que aplicar al componente;
El archivo entero no es más largo de 180 líneas (incluyendo los vacíos), y el código es muy simple.


Paquete: código y recursos


Una vez creado el componente, podemos crear un nuevo paquete que lo contiene (IDE de Delphi, del menú Archivo -> Nuevo -> Proyectos Delphi -> Package) y seguir estos sencillos pasos:


  • añadir la unit del nuevo componente;
  • eliminar las dependencias de la VCL que el asistente puede haber establecido;
  • Añadimos a empaquetar todas las plataformas para las que queremos poner a disposición del componente;
  • Seleccionamos de nuevo la plataforma Win32;
  • Clic derecho sobre el nombre del paquete en el Project Manager, clic en Generar;
  • Clic derecho sobre el nombre del paquete en el Administrador de proyectos, clic en  Instalar;
Y ya tenemos la confirmación de que nuestro nuevo componente está instalado en el IDE.
Si creamos una nueva aplicación (de escritorio o móvil), y abrimos un formulario, debemos ver aparecer en la paleta de herramientas nuestro nuevo componente.
Recuerde que el componente se registra en la página de la paleta que ha especificado en el asistente para crear el componente (se puede comprobar en el archivo .pas de los valores de los componentes de los parámetros del procedimiento RegisterComponents . Si lo cambiaron, recuerde reinstalar su paquete después de una nueva reconstrucción).



procedure Register;
begin
  RegisterComponents('Andrea', [TGMailLabel]);
end;

El procedimiento Registrar mi componente TGMailLabel 


Recuerde incluir el .style archivo y archivos rc, para que los recursos se compilen cada vez que realice un Build y (gracias a la directiva {$ R} GMailLabel.res  estarán presentes en el archivo .pas) incluido en el ejecutable de la aplicación compilado.

Un componente, 4 plataformas


Tenemos, pues, un nuevo componente visual que puede utilizar tanto en aplicaciones de escritorio FireMonkey (Windows y Mac OS X) que en aplicaciones móviles (Android y iOS). Estas son algunas capturas de pantalla del IDE de las aplicaciones en ejecución:



El form de escritorio con algunos  TGMailLabel, en tiempo de diseño


Como se puede ver en la vista de estructura también se ha aplicado a un componente ShadowEffect1 GMailLabel4: por supuesto, se puede utilizar el componente TGMailLabel al igual que todos los componentes FireMonkey estándar y luego añadir un shadow que se aplicará en tiempo de ejecución (en la siguiente imagen no es visible debido a mi Win XP se ejecuta en máquinas virtuales en mi MacBookPro, pero se puede ver en la captura de pantalla de Mac OS X).


Form FireMonkey en un escritorio, se ejecuta en Windows (Win XP)

Formulario FireMonkey que se ejecuta en Mac OS X (Mavericks)


Form FireMonkey móvil (plataforma Android), en tiempo de diseño

Form FireMonkey móvil (plataforma iOS), en tiempo de diseño

Form FireMonkey  en Samsung S2

FireMonkey en el simulador de iOS

Referencias


Si usted está interesado en escribir componentes FireMonkey, sólo puedo aconsejarle el material de Ray Konopka disponibles on-line, o las últimas dos sesiones CodeRage, "Creación de controles personalizados para la plataforma de aplicaciones de FM" y "la utilización eficaz de controles de lista en Mobile Aplicaciones ".


Conclusiones


Además de ser una herramienta vital con la que FireMonkey permite crear aplicaciones GUI en diferentes plataformas, los estilos pueden ser utilizados para crear componentes personalizados con poco esfuerzo explotando el potencial de la IDE. 

Una vez instalado en el IDE, los componentes pueden ser utilizados en el escritorio y / o móvil sobre cuatro plataformas soportadas actualmente por Delphi XE5.

Materiales

Puede descargar el código fuente completo del ejemplo en el siguiente enlace:
 El código fuente - Enlace a DropBox


Fuente: blog.delphiedintorni.it

Estudiando el algoritmo RSA

Todos tenemos una idea de cómo funciona el cifrado asimétrico RSA, que se basa en unos números primos muy largos para generar una clave pública, con la que cualquiera puede cifrar un documento dirigido a ti, y una clave privada, con la que sólo tú puedes descifrarlo. Pero a mí siempre se me ha resistido la comprensión última, las tuercas y tornillos del algoritmo, sobre todo porque mi conocimiento de la Teoría de los Números deja mucho que desear. Por eso he decidido hacer un auto-cursillo sobre este tema, con la esperanza de haber captado, si no los fundamentos profundos, al menos la mecánica detallada del procedimiento. También espero que ese estudio le sirva a alguien que vaya igual de despistado en este asunto. A los que estáis más puestos en esta materia os ruego benevolencia, incluso alguna colaboración o, si os aburre, que miréis para otro lado.
Me ha servido bastante la explicación que he encontrado en Clay Mathematics Institute, pero cualquiera de las que hay por ahí serviría igualmente, si se mira con atención.
Para facilitar la comprensión he confeccionado una versión de juguete, que usa números primos pequeños, con lo que no se consigue fortaleza alguna, pero quizá se vea más claro el intríngulis.


Para empezar, se codifican los caracteres del mensaje en claro mediante una tabla como ésta:
* 0 1 2 3 4 5 6 7 8 9
0 XX XX XX XX XX XX XX XX XX XX
1 SP A B C D E F G H I
3 T U V W X Y Z a b c
2 J K L M N O P Q R S 4 d e f g h i j k l m
7 ! @ # $ % ^ & * - +
5 n o p q r s t u v w 6 x y z . , : ; ' " ` 8 ( ) [ ] { } ? / < >
9 0 1 2 3 4 5 6 7 8 9
en la que cada carácter se representa por el par de números de su fila y su columna. Por ejemplo, la palabra KRIPTOPOLIS se codificaría por el número
K R I P T O P O L I S = 21 28 19 26 30 25 26 25 22 19 29
KRIPTOPOLIS = 2128192630252625221929
Supongo que también podría usarse una tabla en la que tengan cabida los acentos y la Ñ, aprovechando los caracteres no utilizados, pero esto ahora no nos preocupa.
El siguiente paso es generar dos números primos p y q, tan grandes como sea posible, aunque en nuestra versión de juguete nos limitaremos a dos primos diminutos:
p = 439
q = 449
N = p*q = 197111
Después se fabrica número m a partir de los primos:
m = (p – 1) * (q – 1) = 196224
cuya utilidad se verá luego.
Este número se descompone en sus factores primos
m = 196224 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 3 * 7 * 73
Ahora necesitamos un número e que no tenga ningún factor común con m, es decir, que sea primo con respecto a él. En esto hay que tener cierto arte, porque luego tendremos que calcular otro número que va a depender de éste. Pongamos que construimos un número de esta forma:
e = 5 * 11 * 19 = 1045
Llegamos a la parte final de esta tarea, y es obtener otro núnero d que, junto con e, cumpla esta curiosa propiedad:
e * d - 1 = múltiplo de m
es decir:
e * d = m * y + 1
e * d – 1 = m * y
d = (m * y + 1)/e
Para calcular d hay que ir dando valores enteros a y desde 1 en adelante, hasta que el resultado sea entero, de aquí la importancia de elegir “bien” el número e anterior. Para esta operación puede servirnos una hoja de cálculo, como la que se ve en la figura. En nuestro caso, el primer valor entero de d aparece para y = 31
y = 31
d = 5821
Ya tenemos la tarea hecha, salvo el cifrado, claro. Ahora podemos presentar N y e como clave pública, con la que cualquiera podrá mandarnos un mensaje cifrado, mediante la operación
c = x^e modulo N
donde x es el mensaje convertido en un número por el procedimiento antes descrito
Por nuestra parte, con la clave privada -guardada a buen recaudo- que es básicamente el número d, sólo tenemos que descifrar mediante la operación
x = c^d modulo N
y ya está.
Para aplicar este algoritmo se necesita una herramienta que maneje enteros de longitud arbitrariamente larga, incluso para nuestra versión de juguete. Mediante Python, que no es demasiado eficiente, los cálculos son:
Imaginemos que nuestro mensaje es una sola letra, la K de KRIPTOPOLIS, cuyo código es el 21, según la tabla. La operación de cifrado será:
Cifrado
c = 21^e modulo N
c = 21^1045 modulo 197111 = 63202
Si tuviéramos un número par de dígitos se podría presentar como 63 20 etc, es decir .J (punto jota, etc)
Para descifrar sólo tenemos que calcular:
Descifrado
x = c^d modulo N
x =63202^5821 modulo 197111 = 21 = K
Ahora viene la pregunta fundamental: ¿Cómo es posible que la operación de descifrado deshaga lo que hace la de cifrado, siendo tan distintas? Y la respuesta es: Debido al Pequeño Teorema de Fermat: Si a no es divisible por p, siendo p primo, entonces a^(p-1) - 1 es divisible por p
=====================================================================

REEDICIÓN

En realidad la explicación se basa en el Teorema de Euler-Fermat , tal como trato de explicarlo en


=====================================================================

La fortaleza del sistema, como ya sabéis, radica en que la factorización de un número N grande requiere mucho tiempo de computación, pero algunos opinan que los avances en hardware y, sobre todo los cálculos con GPUs en paralelo, van a traer pronto la muerte de RSA. La gente malpensada cree que alguna Agencia ya lo ha conseguido.







Imágenes: 








Fuente: http://www.kriptopolis.com


Descargar fuente en Delphi

Descargar ejecutable

Descargar última versión de la unit de la Biblioteca,DFFLibV14_11May2015. (Necesario recompilar el programa).