29. juni 2001 - 18:42
Der er
1 løsning
Version nummer osv..
Hvordan er det lige at versions nummer osv bliver brugt?
Derved mener jeg at det første version man \"Releaser\" er version 1. Men \"Minor version\" og \"Build\" hvordan bliver det brugt ???
Bliver \"Miner version\" sat 1 gan op hver gang at \"build\" går over 100 eller hvordan er det ?
Og hvordan regner man sit \"build\" nummer ud ? Er det alle de komponenter man bruger eller er det alle procedure/funktioner der er i ens kode ?
Der er ikke nogen \"fast definition\" på hvordan man skal bruge Major, Minor, Release og Build. Ligeledes er så \"tælles\" de enkelte dele ikke op/ned efter et bestemt mønster.
\"I min bog\" så skal der \"noget til\" før man tæller Major op. I store træk så mener jeg ikke dette skal ske med mindre man skriver applikationen på ny, skifter database eller noget andet gennemgribende. Minor tæller jeg op hver gang jeg \"frigiver\" en ny version. Build tælles automatisk op hver eneste gang man beder Delphi om at Builde (så fremt man vælger dette i \"Project->Options->Version Info->Auto-Increment build number\").
Release bruger jeg (i forhold til så mange andre) at angiver hvorvidt min applikation er en \"normal\"-, alfa- eller beta-release. En alfa-release er en MEGET tidlig version som frigives (normalt til få personer) for at få en føling med hvordan den endelige version kan komme til at se ud. En beta-release frigives normalt på et senere tidspunkt (ofte få uger/måneder før den endelige version frigives) og ofte til en større skare af personer. Det er ofte beta-testernes opgave at \"teste\" programmet og give udviklerne/programmørene feedback.
Nedenstående er fra min Aboutbox\'s OnCreate hvor jeg \"henter\" og viser applikationens version:
<SNIP>
var
iTmpWidth : Integer;
iMinWidth : Integer;
iMajor, iMinor : Integer;
iRelease, iBuild : Integer;
dwVerInfoSize : DWORD;
pVerInfo : Pointer;
dwVerValueSize : DWORD;
VerValue : PVSFixedFileInfo;
dwDummy : DWORD;
VerInfoFileName : String;
begin
// Version info
dwVerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), dwDummy);
GetMem(pVerInfo, dwVerInfoSize);
try
GetFileVersionInfo(PChar(ParamStr(0)), 0, dwVerInfoSize, pVerInfo);
VerQueryValue(pVerInfo, \'\\\', Pointer(VerValue), dwVerValueSize);
with VerValue^ do begin
iMajor := dwFileVersionMS shr 16;
iMinor := dwFileVersionMS and $FFFF;
iRelease := dwFileVersionLS shr 16;
iBuild := dwFileVersionLS and $FFFF;
end;
finally
FreeMem(pVerInfo, dwVerInfoSize);
end;
// Set labels
Caption := \'About\';
LabelVersion.Caption := Format(\'%d.%2.2d\', [iMajor,iMinor]);
if (iRelease > 0) and (iRelease < 27)
then LabelVersion.Caption := LabelVersion.Caption + Chr(96+iRelease);
LabelBuild.Caption := Format(\'%4.4d\', [iBuild]);
end;
</SNIP>