Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   migrar aplicacion delplhi - lazarus (https://www.clubdelphi.com/foros/showthread.php?t=92928)

danielmj 15-03-2018 21:05:07

migrar aplicacion delplhi - lazarus
 
Hola de nuevo a todos, hace tiempo que no ando por aqui, pero estoy teniendo problemas con un pequeño programa que hice en su dia para delphi y que ahora estoy llevando a linux mediante lazarus. Todo está bien en modo compilacion, pero al pulsar F9, tira el error que veis en la captura. No sé por que habla de esa propiedad "flatscrollbar" si el componente (listview) no la tiene.

https://drive.google.com/open?id=12Y...yhce3MB2fJLA85

Alguna idea o sugerencia?
Saludos.

Casimiro Notevi 15-03-2018 21:26:29

¿Seguro que es un listview?

danielmj 15-03-2018 22:08:56

Hola casimiro, si estoy seguro.
https://drive.google.com/open?id=1Te...wNt1zfJIqwugT0

Saludos.

TiammatMX 15-03-2018 22:52:27

Cita:

Empezado por danielmj (Mensaje 525125)
... No sé por que habla de esa propiedad "flatscrollbar" si el componente (listview) no la tiene...

No, no la tiene 'per sé', es heredada del ancestro del TListView, es la propiedad que si rebasa límites derecha-abajo, pone las barras de navegación. Busca la propiedad en el propio componente, cambia su valor y con eso debe ser suficiente.

danielmj 16-03-2018 14:11:54

Hola TiammatMX,

La unica propiedad que se me ocurre cambiar es poner o no las scrollbar, he probado a quitarlas y/o modificarlas pero sigue sin correr.
Un saludo.

Casimiro Notevi 16-03-2018 18:02:51

Por decir algo, puede que antes tuvieses instalada otra versión que sí tenía esa propiedad y se está usando su bpl.

danielmj 17-03-2018 11:14:23

bueno, la aplicacion se hizo originariamente con delphi 7, no fue por ejemplo de lazarus para windows -> lazarus para linux, no no. Ha sido de D7 a lazarus linux y me encuentro con eso.
Un saludo.

ASAPLTDA 18-03-2018 22:16:48

Propiedad
 
Me ha pasado que la propiedad queda en el texto del componente, revisa la forma como texto, busca el componente y chequea las propiedades

danielmj 19-03-2018 17:38:01

Hola asapltda no entiendo muy bien lo que dices, en el inspector de objetos no hay ninguna propiedad flatscrollbars, y buscando encontre en http://lazarus-ccr.sourceforge.net/d...mlistview.html que esa propiedad tiene un valor por defecto de 0 (falso). Así que en form.create he puesto:
Código Delphi [-]
lista.flatscrollbars:= false
pero sigue igual con el mismo error.

Ñuño Martínez 19-03-2018 17:45:27

El problema es que esa propiedad no existe en el widgetset que estés usando (o en la LCL). Borra la línea y debería funcionar (también en el archivo que contiene el diseño de la ventana).

Casimiro Notevi 19-03-2018 19:00:38

O elimina el componente y lo vuelves a crear.

danielmj 20-03-2018 15:54:17

Hola buenas, lo que dices Casimiro ya lo probé y nada. Estoy pensando en usar una base de datos para almacenar esos valores pero supone modificar gran parte del codigo. Saludos.

Casimiro Notevi 20-03-2018 19:18:18

¿Has probado lo que te han comentado los otros compañeros?
Abres el Form en modo texto, buscas la palabra flatscrollbar y borras la línea.
Vuelves a ponerlo en modo Form.

danielmj 21-03-2018 20:55:46

Hola buenas, ya hice lo de editar como texto y el error se daba en varios componentes pero de este modo se ha solucionado, ahora da ciertos errores pero en compilacion (errores de programacion) que estoy mirando. Gracias por la ayuda.

danielmj 22-03-2018 10:54:47

Buenos dias, al final tanto trabajo para nada, he estado usando el programa generando 100.000 combinaciones y comparando cada una de esas combinaciones con cada una de las 720 permutaciones y en un momento determinado el ordenador se reinicia por calentamiendo excesivo (supongo) y eso que tengo refrigeración liquida que siempre enfria mas que simples ventiladores. Así que me olvido de esto por que estadisticamente las probabilidades de encontrar una combinación ganadora decrecen de forma proporcional en función del número de combinaciones generadas. Es decir, no es lo mismo buscar una combinación de 6 entre (1000) con 720 permutaciones que una entre 10.000.000 con 720 permutaciones. Así que... no puede ser.

Un saludo.

Casimiro Notevi 22-03-2018 12:00:55

je, je, je... hubo una época (yo tenía pelo) en la que varios amigos nos asociamos y montamos un equipo para lo que estás haciendo (basado en procesadores Motorola 68xxx y varios coprocesadores matemáticos externos). Una vez ejecutado, el programa tardaba varias semanas en obtener el resultado, que se iba almacenando en un fichero de texto. Después ese resultado lo filtrábamos mediante otro programa para eliminar basura, repetidos, los que seguro no iban a salir, etc. y quedaban finalmente unas 4000 combinaciones.
El sistema operativo era Minix (todavía no existía Linux), y lo tecleamos por completo, compilamos, linkamos... para obtener el ejecutable.
Y nuestro programa estaba escrito en lenguaje C, puro y duro.

danielmj 22-03-2018 12:44:59

Hola casimiro, pues estoy pensando en una forma para aligerar el proceso y ver si funciona, en concreto.. la aplicacion calcula por ejemplo 20.000 combinaciones de esas, me devuelve los 6 numeros que mas se repiten y a partir de ahí calcula las permutaciones que luego irá comparando con cada combinacion de 6 numeros del listview pero ahora estoy pensando en comparar cada uno de esos 6 numeros con el primero de cada fila del listview, si es igual completa el proceso de comparaciones sino, salta a la siguiente linea (como tienen que darse si o si los 6...). Al menos así creo que el tiempo puede reducirse algo. También estoy pensando en descargar los listados que estan disponibles de los sorteos ya jugados y agregarlos al listview y realizar todo el proceso con esos datos en lugar de generar 6 numeros aleatorios. Imaginacion al poder :D

Un saludo.

tsk 22-03-2018 16:19:29

No tienes que calcular todas las combinaciones, toma todos los datos publicados de resultados anteriores y verifica si hay algún patrón que te permita reducir el área de búsqueda.

Y en lugar de analizar combinaciones, analiza posición por posición.

Por ejemplo la ley del primer dígito (Ley de Benford), si se aplica, entonces ya tienes ganada la primera parte.

Si ya tienes el primer dígito, entonces puedes ir reduciendo la probabilidad que el número se repita, y así sucesivamente. Claro, dependiendo de la configuración del sorteo.

Por ejemplo, si es por medio de bolas, puedes suponer que cuando sale un número este no se repone, por lo que si en un inicia hay 10 bolas de cada número (1-9), la probabilidad de que vuelva a salir se reduce, si se reponen cambia la dinámica. ¿Que otras cosas podrían afectar en este modelo? La presión y flujo del aire, tamaño de la esfera que los contiene, su material (de ello depende el rebote) y tamaño de las bolas así como su posición inicial, pero tendrías que ver si te conviene meterlos en la ecuación. Una forma de simular la trayectoria de una esfera usando Random Walks.

Cuando tienes todos los datos de sorteos anteriores puedes ir realizando simulaciones que te permitan reducir los parámetros y calcular un rango de valores para cada uno.

Casimiro Notevi 22-03-2018 18:42:57

Nuestro "experimento" fue hecho mediante fractales.
Luego, con ese resultado, se le pasaba el filtro de combinaciones que ya habían salido, eliminar resultados "imposibles", etc.

danielmj 23-03-2018 19:46:19

Hola tsk, voy a investigar un poco sobre la ley de benford y como aplicarlo al programa. También quiero cargar listados csv de sorteos ya jugados y continuar a partir de ahí, pero no sé muy bien como cargar estos archivos a un listview (este componente siempre ha sido un poco hueso para mi). Buscaré casos en el foro a ver si encuentro algo.

Saludos.


La franja horaria es GMT +2. Ahora son las 16:51:57.

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