Syntax error, datetimepicker

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Buenas!

Estoy trabajando en un proyecto sencillo relacionado a la seguridad de software, mi idea es chequear la fecha del sistema y compararla con la de la creación del programa, si la fecha supera los 10 meses, el programa envía un Dialog recomendando actualizar.

Pensé en utilizar el plugin DateTimePicker de la siguiente manera:

OnShow:
DateTimePicker.SetDate("Plugin1", 2014, 01, 01); -- Setea la fecha en la que el programa se creo. El objecto se encuentra oculto pero habilitado desde Attributes.
OnClick (En un botón):
result = DateTimePicker.GetDateTimeStr("Plugin1");
if (result == 2014, 01, 01) then
Dialog.Message("Notice", "Programa actualizado.", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
elseif (result == 2014, 01, 02) then	
Dialog.Message("Notice", "Programa desactualizado.", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end
-- Chequea, compara las fechas y envía el Dialog de actualizado o desactualizado.
Al aceptar el código, envía Syntax Error "Line=2: 'then' expected near ','.

Imagino que el plugin está siendo mal utilizado, en sí no debería chequear la fecha exacta para enviar el dialog, imagino que si pasa ese día el mensaje no aparecerá más, si no una vez que se supere esta fecha, el programa envíe el dialog.

Debería utilizar un Timer?

Pido disculpas si estoy utilizando mal el foro o la sección al menos. No espero ningún código completo, si no la corrección del mismo para aclarar mi duda.

Saludos y gracias.


----------- Modifico:
Vi que puedo usar la función System.GetDate para la fecha actual, me podría servir de algo?

Buenas!! Paso a contarles que pude solucionar el problema!! Me alegra mucho de verdad!

A continuación dejo el código por si a alguien le es de ayuda:
var_date1=date(DateTimePicker.GetDateTimeStr("Plugin1"));
var_date2 =date(DateTimePicker.GetDateTimeStr("Plugin2"));
xDate=date.diff(var_date2,var_date1);
if (xDate:spandays()<300)then
Dialog.Message("Mensaje", "Mensaje.", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end

Creo que de esta forma es mas facíl y no dependes de ningún plugin

OnShow:
HIDE: ON
Hidebb Message Hidden Description

Buenísimo!! Pero de esa forma al pasar la fecha el programa no mostraría el mensaje, o me equivoco?

Gracias!!

Correcto, debes modificar el código
:sorry: Modifiqué el mensaje, revisé bien la función y está mal :cabreado:

Pasan los 300 días, y tirando fechas al azar aparece o no el mensaje de actualización. Eso sí, creo que siempre despues de los 10 meses.

El code me quedó así:
var_date1=date(DateTimePicker.GetDateTimeStr("Plugin1"));
var_date2=date(DateTimePicker.GetDateTimeStr("Plugin2"));
xDate=date.diff(var_date2,var_date1);
if (xDate:spandays()<300) then
Dialog.Message("Error", "Mensaje.", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end
:sorry:

Te recomiendo usar Date, sistema Julian, es mas facil de ese modo para lo que quieres lograr
Te referís a
System.GetDate(DATE_FMT_JULIAN);
?

Lo probé poniendo un Input para que me dé el resultado, qué es el siguiente 2456684 :hypno:

En la web de IndigoRose encontré este código de ejemplo que en algo me puede ayudar.
-- Specify the length of the trial period, in days
time_limit = 30;

-- Initialize days_left
days_left = 0;

-- Retrieve previous value stored
date_installed = Application.LoadValue("My Application", "Date Installed");-- Convert loaded value into a number
date_installed = String.ToNumber(date_installed);


-- If there is no previous value (date_installed == 0), create a value
if date_installed == 0 then
    Application.SaveValue("My Application", "Date Installed", System.GetDate(DATE_FMT_JULIAN));
    days_left = time_limit;
else
    days_left = (date_installed + time_limit) - System.GetDate(DATE_FMT_JULIAN);
end


-- Check if there is time left
if String.ToNumber(days_left) < 1 then
    Dialog.Message("Trial Period Over", "This software has expired");
    Application.Exit();
else
    Dialog.Message("Trial Period", "You have "..days_left.." days left in your trial period.");
end 
Pero como es para licencia trabaja de forma diferente a mi idea.

Qué tengo que utilizar para guardar la fecha que yo quiera, no la del sistema la primera vez que se ejecute la aplicación. Por ejemplo, la aplicación se creó el día 01/01/2014 y el mensaje de actualización aparecerá el 01/10/2014. Hasta ahora toda la info que encuentro con el System.GetDate la primera fecha se guarda en la primera ejecución, y se podría enviar el mensaje a los 10 meses de ésta.
Con el DateTimePicker yo ponía dos plugins, uno con la fecha 01/01/2014 y otra con la fecha 01/10/2014 (Utilizando el código que publiqué anteriormente). Funcionaba bien, pero al cumplir los 10 meses el mensaje aparece algunos días y otros no.

Disculpá que me embrolle tanto :hypno: :hypno:

thanks
Exacto, ese ejemplo esta bien, el numero "2456684" es el día actual (según la fecha del sistema) por ejemplo hoy es "2456684", para hacer que envíe el mensaje de actualización debes sumarle los 10 meses, pero debes convertirlos a día (10*30 = 300 días) entonces a 2456684 le sumas 300 te dará = 2456984, eso es como el 22 de Noviembre, exactamente ahí te pedirá la actualización. debes colocar que, si es mayor o igual a la primera fecha, tire el mensaje de actualización.
Siiiiiiiii! Ya voy captando!! Muchas gracias!! :num1: :friends:

Entonces ahora va quedando algo como esto:
if System.GetDate(DATE_FMT_JULIAN) == "2456973" then
Dialog.Message("Notice", "Your message here.", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
elseif System.GetDate(DATE_FMT_JULIAN) > "2456973" then
Dialog.Message("Notice", "Your message here.", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end
No sé como definir si la fecha es superior a la que tendría que aparecer el mensaje. Creo que se tendría que utilizar el signo "+", pero en que forma??

Muchas gracias!

EDITO: Modifiqué el código y parece que ya funciona!!
Excelente, de nada, colocas:

 if    FechaSistema >=   FechaActualizacion then
--Colocas aquí el mensaje

end

El código puedes hacerlo de dos formas:

1) Que tu mismo coloques la fecha que quieras que se actualice.

2) Al estilo del ejemplo que conseguiste, que desde el primer día que el usuario ejecute el programa cuente 300 días para la actualización. (Creo que es el mejor)
Juazz qué simple era, y yo como siempre machacandome la cabeza con ideas absurdas :)

Ahora voy a ver si me conviene de una u otra forma.

Muchas gracias dimatiguz!
Fino, de nada estamos para ayudar; y para que nos ayuden xD :pc:

Gracias
Exelente gracias
viendo :pc: :pc: :friends:
gracias
gracias: good job