Página 1 de 1

Syntax error, datetimepicker

Publicado: 25 Ene 2014 16:33
por MT95
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?

Publicado: 25 Ene 2014 22:50
por MT95
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

Publicado: 25 Ene 2014 23:53
por dimatiguz
Creo que de esta forma es mas facíl y no dependes de ningún plugin

OnShow:
HIDE: ON
Hidebb Message Hidden Description

Publicado: 26 Ene 2014 00:15
por MT95
Buenísimo!! Pero de esa forma al pasar la fecha el programa no mostraría el mensaje, o me equivoco?

Gracias!!

Publicado: 26 Ene 2014 00:24
por dimatiguz
Correcto, debes modificar el código

Re: Syntax error, datetimepicker

Publicado: 26 Ene 2014 00:29
por MT95
: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:

Publicado: 26 Ene 2014 04:40
por dimatiguz
Te recomiendo usar Date, sistema Julian, es mas facil de ese modo para lo que quieres lograr

Re: Syntax error, datetimepicker

Publicado: 26 Ene 2014 06:18
por MT95
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:

Publicado: 26 Ene 2014 06:49
por tam
thanks

Re: Syntax error, datetimepicker

Publicado: 26 Ene 2014 07:52
por dimatiguz
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.

Re: Syntax error, datetimepicker

Publicado: 26 Ene 2014 14:35
por MT95
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!!

Re: Syntax error, datetimepicker

Publicado: 26 Ene 2014 18:23
por dimatiguz
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)

Re: Syntax error, datetimepicker

Publicado: 26 Ene 2014 20:46
por MT95
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!

Re: Syntax error, datetimepicker

Publicado: 26 Ene 2014 22:13
por dimatiguz
Fino, de nada estamos para ayudar; y para que nos ayuden xD :pc:

Publicado: 24 Jul 2014 17:07
por Marsupi68
Gracias

Re: Syntax error, datetimepicker

Publicado: 24 May 2015 03:32
por sSantoss
Exelente gracias

Re: Syntax error, datetimepicker

Publicado: 11 Nov 2017 23:51
por luasqlite
viendo :pc: :pc: :friends:

Re: Syntax error, datetimepicker

Publicado: 31 Ene 2019 09:14
por good
gracias

Re: Syntax error, datetimepicker

Publicado: 21 May 2019 21:38
por THEBEST1
gracias: good job