23 de diciembre de 2004

Obtener la version con que fue compilado un EXE de VFP

Deseas saber con que version fue creado un .EXE, a continuacion una funcion creada por Rick Bean...

El siguiente codigo fue obtenido de los newsgroups de VFP en ingles:

**************************************************
* Subject. Re: Identifying the versions of VFP used to build an EXE or DLL
* Sender: Rick Bean rgbean@unrealmelange-inc.com
* Date: 04/11/2004 8:01
* newsgroup: microsoft.public.fox.programmer.exchange
**************************************************

Hay que hacer notar que funcionara con ejecutables desde FoxPro para Windows, hasta el VFP9b.

**************************************************
* Funcion: GetFoxEXEVersion
* Obtiene la version en que fue compilado un EXE
* Autor: Rick Bean rgbean@unrealmelange-inc.com
* Ejemplo: ?GetFoxEXEVersion(GETFILE("EXE"))
**************************************************

* GetFoxEXEVersion.prg
FUNCTION GetFoxEXEVersion
LPARAMETERS p_cEXEName
DIMENSION VersionInfo[8,3]
VersionInfo[1,1] = "FPW 2.5"
VersionInfo[2,1] = "FPW 2.6"
VersionInfo[3,1] = "VFP 3.0"
VersionInfo[4,1] = "VFP 5.0"
VersionInfo[5,1] = "VFP 6.0"
VersionInfo[6,1] = "VFP 7.0"
VersionInfo[7,1] = "VFP 8.0"
VersionInfo[8,1] = "VFP 9.0"
VersionInfo[1,2] = "foxw"
VersionInfo[2,2] = "foxw"
VersionInfo[3,2] = "VisualFoxProRuntime.3"
VersionInfo[4,2] = "VisualFoxProRuntime.5"
VersionInfo[5,2] = "VisualFoxProRuntime.6"
VersionInfo[6,2] = "VisualFoxProRuntime.7"
VersionInfo[7,2] = "VisualFoxProRuntime.8"
VersionInfo[8,2] = "VisualFoxProRuntime.9"
VersionInfo[1,3] = "00D1"
VersionInfo[2,3] = "0111"
VersionInfo[3,3] = ""
VersionInfo[4,3] = "3228"
VersionInfo[5,3] = "1418"
VersionInfo[6,3] = "162C"
VersionInfo[7,3] = "1638"
VersionInfo[8,3] = "10EC" && beta 1
LOCAL lnii, lcVersion, lnHandle, lcKeyName
lnHandle = FOPEN(p_cEXEName, 0)
IF lnHandle < 0
 RETURN "Unable to Open file"
ENDIF

lcVersion = "(unknown)"
FOR lnii = 1 TO 8
 IF !EMPTY(VersionInfo[lnii,3])
  = FSEEK(lnHandle, EVALUATE("0x"+VersionInfo[lnii,3]))
  lcKeyName = VersionInfo[lnii,2]
  IF FGETS(lnHandle, LEN(lcKeyName)) == lcKeyName
     lcVersion = VersionInfo[lnii, 1]
     EXIT
  ENDIF
 ENDIF
ENDFOR
=FCLOSE(lnHandle)

RETURN lcVersion

Espero les sea de utilidad.

Espartaco Palma Martinez

1 comentario :

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.