Número de versión de la aplicación


Cómo obtener el número de versión de una aplicación en tiempo de ejecución
unidad de GetVersionInfo

interfaz

usos
& nbsp & nbsp Windows, Clases, SysUtils

procedimiento GetProjectVersionInfo(AVersionList: TStrings AFileName: string = ')
función GetBuildInfo(var V1, V2, V3, V4: Palabra AFileName: string = '): Boolean
función GetBuildInfoAsString(AFileName: string = '): string

aplicación

tipo
& nbsp & nbsp PTransBuffer = ^TTransBuffer
& nbsp & nbsp TTransBuffer = array[1..13] de smallint

const
& nbsp & nbsp CInfoStr : array[1..13] de string =
& nbsp & nbsp & nbsp & nbsp ('FileVersion',
& nbsp & nbsp & nbsp & nbsp & nbsp 'CompanyName',
& nbsp & nbsp & nbsp & nbsp & nbsp 'FileDescription',
& nbsp & nbsp & nbsp & nbsp & nbsp 'InternalName',
& nbsp & nbsp & nbsp & nbsp & nbsp 'LegalCopyright',
& nbsp & nbsp & nbsp & nbsp & nbsp 'LegalTradeMarks',
& nbsp & nbsp & nbsp & nbsp & nbsp 'OriginalFileName',
& nbsp & nbsp & nbsp & nbsp & nbsp 'ProductName',
& nbsp & nbsp & nbsp & nbsp & nbsp 'ProductVersion',
& nbsp & nbsp & nbsp & nbsp & nbsp de 'Comentarios',
& nbsp & nbsp & nbsp & nbsp & nbsp 'CurrentProgramVersion',
& nbsp & nbsp & nbsp & nbsp & nbsp 'CurrentDatabaseVersion',
& nbsp & nbsp & nbsp & nbsp & nbsp 'VersionDetails')

procedimiento GetProjectVersionInfo(AVersionList: TStrings AFileName: string = ')
{
& nbsp Este procedimiento devuelve TODA la información de la versión independiente
& nbsp entradas de cadena de un TString lista. Cada elemento puede tener acceso
& nbsp por la indexación de la TString lista así: AVersionList[0], AVersionList[1], etc..
}
var
& nbsp & nbsp I: Integer
& nbsp & nbsp InfoSize: DWORD
& nbsp & nbsp pTrans: PTransBuffer
& nbsp & nbsp TransStr: string
& nbsp & nbsp TypeStr: cadena
& nbsp & nbsp Valor: PChar
& nbsp & nbsp VerBuf: puntero
& nbsp & nbsp VerSize: DWORD
& nbsp & nbsp Wnd: DWORD
begin
& nbsp & nbsp AVersionList.Claro
& nbsp & nbsp si AFileName = ', a continuación,
& nbsp & nbsp & nbsp & nbsp AFileName := ParamStr(0)
& nbsp & nbsp InfoSize := GetFileVersioninfoSize(PChar(AFileName), Wnd)

& nbsp & nbsp si (InfoSize <> 0) entonces
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp GetMem(VerBuf, InfoSize)
& nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si GetFileVersionInfo(PChar(AFileName), Wnd, InfoSize, VerBuf), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp VerQueryValue(VerBuf, PChar('/VarFileInfo/Traducción'),
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Puntero(pTrans), VerSize)

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp TransStr := IntToHex(pTrans^[1], 4) IntToHex(pTrans^[2], 4)

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp for i := Baja(CInfoStr) a Alta(CInfoStr)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp TypeStr := 'StringFileInfo/' TransStr '/' CInfoStr[I]

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si VerQueryvalue(VerBuf, PChar(TypeStr),
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Puntero(Valor), VerSize), a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp AVersionList.Agregar(CInfoStr[I] '=' Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp FreeMem(VerBuf)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final
fin

función GetBuildInfo(var V1, V2, V3, V4: Palabra AFileName: string = '): Boolean
{
& nbsp Este procedimiento devuelve el individuo Mayor/Menor/Versión/Build
& nbsp valores de la información de la versión.
}
var
& nbsp & nbsp VerInfoSize: DWORD
& nbsp & nbsp VerInfo: Puntero
& nbsp & nbsp VerValueSize: DWORD
& nbsp & nbsp VerValue: PVSFixedFileInfo
& nbsp & nbsp Ficticio: DWORD
begin
& nbsp & nbsp Resultado := True
& nbsp & nbsp si AFileName = ', a continuación,
& nbsp & nbsp & nbsp & nbsp AFileName := ParamStr(0)
& nbsp & nbsp VerInfoSize := GetFileVersionInfoSize(PChar(AFileName), Dummy)
& nbsp & nbsp si VerInfoSize = 0, entonces
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Resultado := False
& nbsp & nbsp & nbsp & nbsp Salida
& nbsp & nbsp final
& nbsp & nbsp GetMem(VerInfo, VerInfoSize)
& nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp GetFileVersionInfo(PChar(AFileName), 0, VerInfoSize, VerInfo)
& nbsp & nbsp & nbsp & nbsp VerQueryValue(VerInfo, '/', Puntero(VerValue), VerValueSize)

& nbsp & nbsp & nbsp & nbsp con VerValue^ ¿
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp V1 := dwFileVersionMS shr 16
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp V2 := dwFileVersionMS y $FFFF
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp V3 := dwFileVersionLS shr 16
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp V4 := dwFileVersionLS y $FFFF
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp FreeMem(VerInfo, VerInfoSize)
& nbsp & nbsp final
fin

función GetBuildInfoAsString(AFileName: string = '): cadena
var
& nbsp & nbsp V1: Word
& nbsp & nbsp V2: Word
& nbsp & nbsp V3: Word
& nbsp & nbsp V4: Word
begin
& nbsp & nbsp si GetBuildInfo(V1, V2, V3, V4), a continuación,
& nbsp & nbsp & nbsp & nbsp Resultado := Format('%d.%d.%d.%d', [V1, V2, V3, V4])
& nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp Resultado := '
fin

final.









Numero de version de la aplicacion


Numero de version de la aplicacion : Multi-millones de consejos para hacer su vida mas facil.


Como obtener el numero de version de una aplicacion en tiempo de ejecucion
unidad de GetVersionInfo

interfaz

usos
& nbsp & nbsp Windows, Clases, SysUtils

procedimiento GetProjectVersionInfo(AVersionList: TStrings AFileName: string = ')
funcion GetBuildInfo(var V1, V2, V3, V4: Palabra AFileName: string = '): Boolean
funcion GetBuildInfoAsString(AFileName: string = '): string

aplicacion

tipo
& nbsp & nbsp PTransBuffer = ^TTransBuffer
& nbsp & nbsp TTransBuffer = array[1..13] de smallint

const
& nbsp & nbsp CInfoStr : array[1..13] de string =
& nbsp & nbsp & nbsp & nbsp ('FileVersion',
& nbsp & nbsp & nbsp & nbsp & nbsp 'CompanyName',
& nbsp & nbsp & nbsp & nbsp & nbsp 'FileDescription',
& nbsp & nbsp & nbsp & nbsp & nbsp 'InternalName',
& nbsp & nbsp & nbsp & nbsp & nbsp 'LegalCopyright',
& nbsp & nbsp & nbsp & nbsp & nbsp 'LegalTradeMarks',
& nbsp & nbsp & nbsp & nbsp & nbsp 'OriginalFileName',
& nbsp & nbsp & nbsp & nbsp & nbsp 'ProductName',
& nbsp & nbsp & nbsp & nbsp & nbsp 'ProductVersion',
& nbsp & nbsp & nbsp & nbsp & nbsp de 'Comentarios',
& nbsp & nbsp & nbsp & nbsp & nbsp 'CurrentProgramVersion',
& nbsp & nbsp & nbsp & nbsp & nbsp 'CurrentDatabaseVersion',
& nbsp & nbsp & nbsp & nbsp & nbsp 'VersionDetails')

procedimiento GetProjectVersionInfo(AVersionList: TStrings AFileName: string = ')
{
& nbsp Este procedimiento devuelve TODA la informacion de la version independiente
& nbsp entradas de cadena de un TString lista. Cada elemento puede tener acceso
& nbsp por la indexacion de la TString lista asi: AVersionList[0], AVersionList[1], etc..
}
var
& nbsp & nbsp I: Integer
& nbsp & nbsp InfoSize: DWORD
& nbsp & nbsp pTrans: PTransBuffer
& nbsp & nbsp TransStr: string
& nbsp & nbsp TypeStr: cadena
& nbsp & nbsp Valor: PChar
& nbsp & nbsp VerBuf: puntero
& nbsp & nbsp VerSize: DWORD
& nbsp & nbsp Wnd: DWORD
begin
& nbsp & nbsp AVersionList.Claro
& nbsp & nbsp si AFileName = ', a continuacion,
& nbsp & nbsp & nbsp & nbsp AFileName := ParamStr(0)
& nbsp & nbsp InfoSize := GetFileVersioninfoSize(PChar(AFileName), Wnd)

& nbsp & nbsp si (InfoSize <> 0) entonces
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp GetMem(VerBuf, InfoSize)
& nbsp & nbsp & nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si GetFileVersionInfo(PChar(AFileName), Wnd, InfoSize, VerBuf), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp VerQueryValue(VerBuf, PChar('/VarFileInfo/Traduccion'),
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Puntero(pTrans), VerSize)

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp TransStr := IntToHex(pTrans^[1], 4) IntToHex(pTrans^[2], 4)

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp for i := Baja(CInfoStr) a Alta(CInfoStr)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp TypeStr := 'StringFileInfo/' TransStr '/' CInfoStr[I]

& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si VerQueryvalue(VerBuf, PChar(TypeStr),
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp Puntero(Valor), VerSize), a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp AVersionList.Agregar(CInfoStr[I] '=' Valor)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp FreeMem(VerBuf)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final
fin

funcion GetBuildInfo(var V1, V2, V3, V4: Palabra AFileName: string = '): Boolean
{
& nbsp Este procedimiento devuelve el individuo Mayor/Menor/Version/Build
& nbsp valores de la informacion de la version.
}
var
& nbsp & nbsp VerInfoSize: DWORD
& nbsp & nbsp VerInfo: Puntero
& nbsp & nbsp VerValueSize: DWORD
& nbsp & nbsp VerValue: PVSFixedFileInfo
& nbsp & nbsp Ficticio: DWORD
begin
& nbsp & nbsp Resultado := True
& nbsp & nbsp si AFileName = ', a continuacion,
& nbsp & nbsp & nbsp & nbsp AFileName := ParamStr(0)
& nbsp & nbsp VerInfoSize := GetFileVersionInfoSize(PChar(AFileName), Dummy)
& nbsp & nbsp si VerInfoSize = 0, entonces
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Resultado := False
& nbsp & nbsp & nbsp & nbsp Salida
& nbsp & nbsp final
& nbsp & nbsp GetMem(VerInfo, VerInfoSize)
& nbsp & nbsp probar
& nbsp & nbsp & nbsp & nbsp GetFileVersionInfo(PChar(AFileName), 0, VerInfoSize, VerInfo)
& nbsp & nbsp & nbsp & nbsp VerQueryValue(VerInfo, '/', Puntero(VerValue), VerValueSize)

& nbsp & nbsp & nbsp & nbsp con VerValue^ ¿
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp V1 := dwFileVersionMS shr 16
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp V2 := dwFileVersionMS y $FFFF
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp V3 := dwFileVersionLS shr 16
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp V4 := dwFileVersionLS y $FFFF
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp finalmente
& nbsp & nbsp & nbsp & nbsp FreeMem(VerInfo, VerInfoSize)
& nbsp & nbsp final
fin

funcion GetBuildInfoAsString(AFileName: string = '): cadena
var
& nbsp & nbsp V1: Word
& nbsp & nbsp V2: Word
& nbsp & nbsp V3: Word
& nbsp & nbsp V4: Word
begin
& nbsp & nbsp si GetBuildInfo(V1, V2, V3, V4), a continuacion,
& nbsp & nbsp & nbsp & nbsp Resultado := Format('%d.%d.%d.%d', [V1, V2, V3, V4])
& nbsp & nbsp else
& nbsp & nbsp & nbsp & nbsp Resultado := '
fin

final.


Número de versión de la aplicación

Número de versión de la aplicación : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación