bonjour,
dans delphi (2006), dans projet/options/informations de version on peut écrire la "version du fichier"
est ce que je peux mettre cette version en passant par du code?
merci
bonjour,
dans delphi (2006), dans projet/options/informations de version on peut écrire la "version du fichier"
est ce que je peux mettre cette version en passant par du code?
merci
Bonjour,
Avec D7, j'utilise cette fonction trouvée sur internet :
Il faut bien sûr que le numéro de version soit initialisé dans le projet Delphi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 function GetAppVersionStr: string; // Renvoie la version de l'application var verblock:PVSFIXEDFILEINFO; versionMS,versionLS:cardinal; verlen:cardinal; rs:TResourceStream; m:TMemoryStream; p:pointer; s:cardinal; AppVersionString:String ; i : Integer ; begin m:=TMemoryStream.Create; try rs:=TResourceStream.CreateFromID(HInstance,1,RT_VERSION); try m.CopyFrom(rs,rs.Size); finally rs.Free; end; m.Position:=0; if VerQueryValue(m.Memory,'\',pointer(verblock),verlen) then begin VersionMS:=verblock.dwFileVersionMS; VersionLS:=verblock.dwFileVersionLS; AppVersionString:=Application.Title+' '+ IntToStr(versionMS shr 16)+'.'+ IntToStr(versionMS and $FFFF)+'.'+ IntToStr(VersionLS shr 16)+'.'+ IntToStr(VersionLS and $FFFF); end; if VerQueryValue(m.Memory,PChar('\\StringFileInfo\\'+ IntToHex(GetThreadLocale,4)+IntToHex(GetACP,4)+'\\FileDescription'),p,s) or VerQueryValue(m.Memory,'\\StringFileInfo\\040904E4\\FileDescription',p,s) then //en-us AppVersionString:=PChar(p)+' '+AppVersionString; Result := AppVersionString ; finally m.Free; end; end;
A+
Charly
Mon site : http://lapaille.byethost24.com/index.htm
@Charly910, je crois que exyacc veut écrire le numéro et non le lire
@exyacc utilise plutôt un fichier RC/RES oui comme le fait ici Paul TOTH si tu ne veux pas le faire par les options de projet
Par code, ça va se compliquer, il te faut ajouter la ressource après que l'EXE soit compilé
Générer la ressource n'est pas forcément évident par code, du coup, il te faudrait peut-être utiliser BRCC32
Resource Hacker écrit en Delphi le fait donc tu pourrais le faire même c'est peut-être pas mal de boulot
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
merci pour vos réponses
effectivement, ça n'a pas l'air simple, en fait, c'était pour éviter d'aller dans le menu et d'oublier de changer le numero.
je pensais qu'il y aurait eu un truc genre {$version=xxxx}
mais bon, tant pis !
merci
Tu peux séparer tes ressources de tes valeurs
Exemple:
Resource.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #ifndef RESOURCE_H #define RESOURCE_H #define IDI_ICON1 101 #define COMPANY_NAME "XXX\0" #define PRODUCT_NAME "Product YYYY\0" #define PRODUCT_NAMEW L"Product YYYY" #define PRODUCT_VERSION 0 #define PRODUCT_VERSION_STR "\0" #define LEGAL_COPYRIGHT "2016, XXX\0" #define PROJECT_THREAD_POOL_VERSION 1,0,0,0 #define PROJECT_THREAD_POOL_VERSION_STR "1.0.0.0\0" #define PROJECT_THREAD_POOL_NAME "thread_pool.exe\0" #define PROJECT_THREAD_POOL_DESCRIPTION "Thread pool\0" #define PROJECT_THREAD_POOL_DESCRIPTION_FR "Bassin de threads\0" #define XXX_LOGO_MULTI "XXX\\my_icon.ico" #endif // RESOURCE_H
project_thread_pool.rc:
Avant que tu demandes my_winresrc.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #ifndef _CPP_BUILDER #include <windows.h> #endif // _CPP_BUILDER #include "Resource.h" #include "winver.h" //#include "my_winresrc.h" LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) VS_VERSION_INFO VERSIONINFO FILEVERSION PROJECT_THREAD_POOL_VERSION PRODUCTVERSION PRODUCT_VERSION FILEOS VOS_DOS_WINDOWS32 FILETYPE VFT_APP BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904E4" BEGIN VALUE "CompanyName", COMPANY_NAME VALUE "ProductName", PRODUCT_NAME VALUE "ProductVersion", PRODUCT_VERSION_STR VALUE "LegalCopyright", LEGAL_COPYRIGHT VALUE "FileVersion", PROJECT_THREAD_POOL_VERSION_STR VALUE "InternalName", PROJECT_THREAD_POOL_NAME VALUE "OriginalFilename", PROJECT_THREAD_POOL_NAME VALUE "FileDescription", PROJECT_THREAD_POOL_DESCRIPTION END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x0409, 0x04E4 END END LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDI_ICON1 ICON DISCARDABLE XXX_LOGO_MULTI
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 #ifndef MY_WINRESRC #define MY_WINRESRC #define LANG_ENGLISH 0x09 #define SUBLANG_ENGLISH_US 0x01 #define LANG_FRENCH 0x0C #define SUBLANG_FRENCH 0x01 #define LANG_NEUTRAL 0x00 #define SUBLANG_NEUTRAL 0x00 #define VS_VERSION_INFO 1 /* ----- VS_VERSION.dwFileFlags ----- */ #define VS_FF_DEBUG 0x00000001L #define VS_FF_PRERELEASE 0x00000002L #define VS_FF_PATCHED 0x00000004L #define VS_FF_PRIVATEBUILD 0x00000008L #define VS_FF_INFOINFERRED 0x00000010L #define VS_FF_SPECIALBUILD 0x00000020L /* ----- VS_VERSION.dwFileOS ----- */ #define VOS_UNKNOWN 0x00000000L #define VOS_DOS 0x00010000L #define VOS_OS216 0x00020000L #define VOS_OS232 0x00030000L #define VOS_NT 0x00040000L #define VOS_WINCE 0x00050000L #define VOS_BASE 0x00000000L #define VOS_WINDOWS16 0x00000001L #define VOS_PM16 0x00000002L #define VOS_PM32 0x00000003L #define VOS_WINDOWS32 0x00000004L #define VOS_DOS_WINDOWS16 0x00010001L #define VOS_DOS_WINDOWS32 0x00010004L #define VOS_OS216_PM16 0x00020002L #define VOS_OS232_PM32 0x00030003L #define VOS_NT_WINDOWS32 0x00040004L /* ----- VS_VERSION.dwFileType ----- */ #define VFT_UNKNOWN 0x00000000L #define VFT_APP 0x00000001L #define VFT_DLL 0x00000002L #define VFT_DRV 0x00000003L #define VFT_FONT 0x00000004L #define VFT_VXD 0x00000005L #define VFT_STATIC_LIB 0x00000007L #endif // MY_WINRESRC
Bonjour,
sinon, autre solution (moins satisfaisante) : ne pas inclure les informations de version dans le projet, et gérer toi même le numéro de version (stockage dans la base de registre ou dans un fichier ini et affichage dans l'appli dans la barre de titre ou dans l'à propos)
A+
Charly
Mon site : http://lapaille.byethost24.com/index.htm
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager