FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
¿como hago para comprobar si un nº de versión es mayor o menor que otro?
pues eso,
partiendo de que ya tengo extraida la versión del ejecutable en un string, como hago para comprobar por ejemplo que una versión de un programa 1.0.0.11 es mayor que otra con valor 1.0.0.9 ¿? y si puede ser complicandolo lo menos posible. comparandolos como strings no sirve ya que "1.0.0.9" es mayor que "1.0.0.11" al estar el 9 en primera posicion. gracias Última edición por cocute fecha: 21-01-2010 a las 12:08:12. |
#2
|
||||
|
||||
Asi:
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Última edición por rgstuamigo fecha: 20-01-2010 a las 18:19:53. |
#3
|
||||
|
||||
Cita:
Si ya tienes armado el string, simplemente tienes que descomponerlo en números separándolo por los puntos y comparar parte a parte, mientras sean iguales de izquierda a derecha, en cuanto un valor es superior al otro, ya tienes identificado cual es la versión mayor. Pero pregunto... este valor lo estas obteniendo con la winapi GetFileVersionInfo?... porque de ser así puedes comparar directamente los resultados de la misma. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#4
|
|||
|
|||
Cita:
uso esta función para extraer la versión:
para rgstuamigo, gracias pero como bien dice delphi.com.ar eso es lo mismo que hacer un simple: if Edit1.Text > edit2.text then ShowMessage('La mayor version es : '+Edit1.Text); if Edit1.Text < edit2.text then ShowMessage('La mayor version es : '+Edit2.Text) else ShowMessage('Son iguales'); ya que no hace falta pasarlos a int ni quitar los puntos para comprobar eso, pero no es correcto. Última edición por cocute fecha: 20-01-2010 a las 18:35:53. |
#5
|
||||
|
||||
Cita:
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
|
#6
|
||||
|
||||
Ok!.. fíjate que internamente la función VersionExe utiliza la winapi GetFileVersionInfo a la cual hice referencia. También terminas obteniendo un registro del tipo TVSFixedFileInfo con dos valores que luego descompones en cuatro. Yo lo que digo es utilizar esos dos valores sin pasarlos a string, es algo mucho mas óptimo ya que se trata de únicamente dos evaluaciones aritméticas por cada comparación.
Hice esto, está sin probar:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. Última edición por delphi.com.ar fecha: 20-01-2010 a las 19:41:31. Razón: Correciones en la redacción |
#7
|
|||
|
|||
muchas gracias por tu interes lo intentare probar y adaptar,
el problema es que uno de los dos valores lo saco de un fichero de texto que descargo de una web, osea no quiero comparar dos ficheros locales, si no la version del ejecutable en curso con un string con el contenido de la ultima version. No se si con esto seria mas sencillo o mas complicado. Pero la verdad es que no pensaba liarme tanto. Al final igual me creo un valor de versión simple que vaya aumentando sin más, sin puntos ni historias y sin tener en cuenta la version real que marca el ejecutable y me olvido de complicaciones. |
#8
|
||||
|
||||
Pero no es tan complicado, simplemente tendrías que escribir algo que haga esto:
Cita:
PD: He corregido el código que había subido, pq había un error en la comparación. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#9
|
|||
|
|||
Ya que has insistido al final me he animado a hacerlo, pero he preferido no aprovechar los datos descompuestos de GetFileVersion, ya que tengo que usar una funcion para descomponer un valor prefiero sacar el valor de version con la función que he puesto mas arriba y luego descomponerlos los dos valores, ya que asi creo que es menos codigo .
Os pongo el código que he usado por si algún dia alguno la utilizais, creo que esta bién, tengo que probarlo mejor a ver: Función para descomponer una cadena con 4 valores separados por 3 puntos:
Función para comprobar que versión es mayor: (devuelve 0 si son iguales, 1 si version1 es mayor y 2 si version2 es mayor)
Para usarlo partiendo de dos edits y un botón:
Última edición por cocute fecha: 21-01-2010 a las 12:22:22. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Fecha de mayor a menor | alcides | Varios | 2 | 15-02-2008 16:46:09 |
Que versión de php necesito para que funcione en mi server lo que hago el Delphi4php | cooper | PHP | 3 | 01-05-2007 04:21:46 |
como puedo hacer para cambiar un archivo de excel con versión 2.1 a versión 8.0 | RONPABLO | Servers | 4 | 23-01-2006 06:02:38 |
Me hago mayor? Me invento las cosas? Soy autosugestionable? | papulo | Varios | 6 | 11-11-2005 21:37:07 |
ordenar un DBGrid de mayor a menor | jmlifi | Varios | 2 | 03-11-2005 16:36:34 |
|