Versionsnummer der Anwendung
Wie man die Versionsnummer einer Anwendung zur Laufzeit
Einheit GetVersionInfo;
Schnittstelle
verwendet
Windows, Klassen, SysUtils;
Prozedur GetProjectVersionInfo (AVersionList: TStrings; AFileName: string = '');
Funktion GetBuildInfo (Var V1, V2, V3, V4: Word; AFileName: string = ''): Boolean;
Funktion GetBuildInfoAsString (AFileName: String = ''): string;
Umsetzung
Typ
PTransBuffer = ^ TTransBuffer;
TTransBuffer = Array [1..13] smallint;
const
CInfoStr: Array [1..13] Zeichenfolge =
('FileVersion',
'Firma',
'DateiBeschreibungTCP',
'InternalName',
'LegalCopyright',
'LegalTradeMarks',
'OriginalFileName',
'ProductName',
'ProductVersion',
'Kommentare',
'CurrentProgramVersion',
'CurrentDatabaseVersion',
'VersionDetails');
Prozedur GetProjectVersionInfo (AVersionList: TStrings; AFileName: string = '');
{
Dieses Verfahren liefert alle Informationen zur Version als separate
Zeichenfolgeneinträgen einer TString-Liste. Jedes Element kann dann zugegriffen werden
durch die Indizierung der TString-Liste so: AVersionList [0], AVersionList [1] etc...
}
var
I: Integer;
InfoSize: DWORD;
pTrans: PTransBuffer;
TransStr: String;
TypeStr: String;
Wert: PChar;
VerBuf: Zeiger;
VerSize: DWORD;
WND: DWORD;
beginnen
AVersionList.Clear;
Wenn AFileName = '' dann
AFileName: = ParamStr(0);
InfoSize: = GetFileVersioninfoSize(PChar(AFileName), Wnd);
Wenn (InfoSize <> 0) dann
beginnen
GetMem (VerBuf, InfoSize);
versuchen Sie
Wenn GetFileVersionInfo(PChar(AFileName), Wnd, InfoSize, VerBuf) dann
beginnen
VerQueryValue (VerBuf, PChar('\VarFileInfo\Translation'),
Pointer(pTrans), VerSize);
TransStr: = IntToHex (pTrans ^ [1], 4) + IntToHex (pTrans ^ [2], 4);
für i: = Low(CInfoStr) High(CInfoStr) Do
beginnen
TypeStr: = 'StringFileInfo\' + TransStr + ' \' + CInfoStr [I];
Wenn VerQueryvalue (VerBuf, PChar(TypeStr),
Pointer(Value), VerSize) dann
AVersionList.Add (CInfoStr [I] + '=' + Wert);
Ende
Ende;
Schließlich
FreeMem(VerBuf);
Ende;
Ende;
Ende;
Funktion GetBuildInfo (Var V1, V2, V3, V4: Word; AFileName: string = ''): Boolean;
{
Diese Prozedur gibt den einzelnen Major/Minor/Release/Build
Werte der Versionsinformationen.
}
var
VerInfoSize: DWORD;
VerInfo: Zeiger;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
beginnen
Ergebnis: = True;
Wenn AFileName = '' dann
AFileName: = ParamStr(0);
VerInfoSize: = GetFileVersionInfoSize(PChar(AFileName), Dummy);
Wenn VerInfoSize = 0 then
beginnen
Ergebnis: = False;
Ausfahrt;
Ende;
GetMem (VerInfo, VerInfoSize);
versuchen Sie
GetFileVersionInfo(PChar(AFileName), 0, VerInfoSize, VerInfo);
VerQueryValue (VerInfo, ' \', Pointer(VerValue), VerValueSize);
mit VerValue ^ tun
beginnen
V1: = DwFileVersionMS Shr 16;
V2: = DwFileVersionMS und $FFFF;
V3: = DwFileVersionLS Shr 16;
V4: = DwFileVersionLS und $FFFF;
Ende;
Schließlich
FreeMem (VerInfo, VerInfoSize);
Ende;
Ende;
Funktion GetBuildInfoAsString (AFileName: String = ''): string;
var
V1: Word;
V2: Word;
V3: Word;
V4: Word;
beginnen
Wenn GetBuildInfo (V1, V2, V3, V4) dann
Ergebnis: = Format ('% d. % d. % d. %d', [V1, V2, V3, V4])
sonst
Ergebnis: = '';
Ende;
Ende.
Versionsnummer der Anwendung
Versionsnummer der Anwendung : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Wie man die Versionsnummer einer Anwendung zur Laufzeit
Einheit GetVersionInfo;
Schnittstelle
verwendet
Windows, Klassen, SysUtils;
Prozedur GetProjectVersionInfo (AVersionList: TStrings; AFileName: string = '');
Funktion GetBuildInfo (Var V1, V2, V3, V4: Word; AFileName: string = ''): Boolean;
Funktion GetBuildInfoAsString (AFileName: String = ''): string;
Umsetzung
Typ
PTransBuffer = ^ TTransBuffer;
TTransBuffer = Array [1..13] smallint;
const
CInfoStr: Array [1..13] Zeichenfolge =
('FileVersion',
'Firma',
'DateiBeschreibungTCP',
'InternalName',
'LegalCopyright',
'LegalTradeMarks',
'OriginalFileName',
'ProductName',
'ProductVersion',
'Kommentare',
'CurrentProgramVersion',
'CurrentDatabaseVersion',
'VersionDetails');
Prozedur GetProjectVersionInfo (AVersionList: TStrings; AFileName: string = '');
{
Dieses Verfahren liefert alle Informationen zur Version als separate
Zeichenfolgeneinträgen einer TString-Liste. Jedes Element kann dann zugegriffen werden
durch die Indizierung der TString-Liste so: AVersionList [0], AVersionList [1] etc...
}
var
I: Integer;
InfoSize: DWORD;
pTrans: PTransBuffer;
TransStr: String;
TypeStr: String;
Wert: PChar;
VerBuf: Zeiger;
VerSize: DWORD;
WND: DWORD;
beginnen
AVersionList.Clear;
Wenn AFileName = '' dann
AFileName: = ParamStr(0);
InfoSize: = GetFileVersioninfoSize(PChar(AFileName), Wnd);
Wenn (InfoSize <> 0) dann
beginnen
GetMem (VerBuf, InfoSize);
versuchen Sie
Wenn GetFileVersionInfo(PChar(AFileName), Wnd, InfoSize, VerBuf) dann
beginnen
VerQueryValue (VerBuf, PChar('\VarFileInfo\Translation'),
Pointer(pTrans), VerSize);
TransStr: = IntToHex (pTrans ^ [1], 4) + IntToHex (pTrans ^ [2], 4);
für i: = Low(CInfoStr) High(CInfoStr) Do
beginnen
TypeStr: = 'StringFileInfo\' + TransStr + ' \' + CInfoStr [I];
Wenn VerQueryvalue (VerBuf, PChar(TypeStr),
Pointer(Value), VerSize) dann
AVersionList.Add (CInfoStr [I] + '=' + Wert);
Ende
Ende;
Schließlich
FreeMem(VerBuf);
Ende;
Ende;
Ende;
Funktion GetBuildInfo (Var V1, V2, V3, V4: Word; AFileName: string = ''): Boolean;
{
Diese Prozedur gibt den einzelnen Major/Minor/Release/Build
Werte der Versionsinformationen.
}
var
VerInfoSize: DWORD;
VerInfo: Zeiger;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
beginnen
Ergebnis: = True;
Wenn AFileName = '' dann
AFileName: = ParamStr(0);
VerInfoSize: = GetFileVersionInfoSize(PChar(AFileName), Dummy);
Wenn VerInfoSize = 0 then
beginnen
Ergebnis: = False;
Ausfahrt;
Ende;
GetMem (VerInfo, VerInfoSize);
versuchen Sie
GetFileVersionInfo(PChar(AFileName), 0, VerInfoSize, VerInfo);
VerQueryValue (VerInfo, ' \', Pointer(VerValue), VerValueSize);
mit VerValue ^ tun
beginnen
V1: = DwFileVersionMS Shr 16;
V2: = DwFileVersionMS und $FFFF;
V3: = DwFileVersionLS Shr 16;
V4: = DwFileVersionLS und $FFFF;
Ende;
Schließlich
FreeMem (VerInfo, VerInfoSize);
Ende;
Ende;
Funktion GetBuildInfoAsString (AFileName: String = ''): string;
var
V1: Word;
V2: Word;
V3: Word;
V4: Word;
beginnen
Wenn GetBuildInfo (V1, V2, V3, V4) dann
Ergebnis: = Format ('% d. % d. % d. %d', [V1, V2, V3, V4])
sonst
Ergebnis: = '';
Ende;
Ende.
Versionsnummer der Anwendung
By Wiezutun
Versionsnummer der Anwendung : Mehreren tausend Tipps, um Ihr Leben einfacher machen.