Текущий архив: 2007.10.07;
Скачать: CL | DM;
Вниз
Информация о билде в Delphi. Найти похожие ветки
← →
Анатолий К. (2007-09-08 18:55) [0]В настройках delphi есть возможность включить: Auto-increment build number. При этом при каждом Project->Build, этот счетчик будет увеличиваться. А как сделать, что бы он увеличивался при каждой компиляции по F9?
← →
Инс © (2007-09-08 19:01) [1]В настройках среды такой опции нет. Так что либо делайте Build. Хотя думаю можно попытаться написать свой эксперт. В котором создать нотификатор, срабатывающий перед компиляцией, и изменять dof-файл проекта. Над этим нужно подумать, сходу не скажу, возможно ли это.
← →
DrPass © (2007-09-08 19:03) [2]
> А как сделать, что бы он увеличивался при каждой компиляции
> по F9?
Было бы несколько странно, если бы счетчик сборок проекта (build) вдруг стал увеличиваться при компиляции прокта (compile), тебе не кажется?
Я понимаю, что чем больше цифирька в счетчике у твоей программулины, тем она будет солиднее смотреться среди курсовиков твоих однокурсников, но все-таки...
← →
Инс © (2007-09-08 19:10) [3]
> [2] DrPass © (08.09.07 19:03)
Так большую циферку и руками поставить можно, что мешает. Кстати, MS вроде бы сами не соблюдают свои же путанные правила нумерации версий, так что, ИМХО, автор сам вправе решать, по каким правилам ему нумеровать версии своих программ.
← →
DrPass © (2007-09-08 19:31) [4]
> Инс © (08.09.07 19:10) [3]
> Так большую циферку и руками поставить можно, что мешает
Так это ж нечестно! :)
> Кстати, MS вроде бы сами не соблюдают свои же путанные правила
> нумерации версий
Правила нумерации версий - это миф. У каждого разработчика своя система. Та же MS обычно при выпуске новой версии операционки сперва приписывает единичку в minor, и только при следующей версии увеличивает major. Это у них прикол такой...
← →
Инс © (2007-09-08 19:37) [5]
> Правила нумерации версий - это миф.
Есть там какие-то рекомендации от MS, но в общем то согласен, это и сказал в [3]. Например, у одной программы версия 1.11 старше, чем 1.9, а у других - наоборот. Тот же номер сборки у Windows в ряд ли соответствует реальному. Так что автор имеет полное моральное право писать туда номер компиляции, или дату рождения своей девушки - его право.
← →
jack128_ (2007-09-08 20:05) [6]
> Например, у одной программы версия 1.11 старше, чем 1.9,
> а у других - наоборот.
э-э? Как это наоборот? 9 > 11 ?? Круто.
← →
Dib@zol © (2007-09-08 20:08) [7]> э-э? Как это наоборот? 9 > 11 ?? Круто.
9 >> 1.1 что и подразумевалось.
← →
Anatoly Podgoretsky © (2007-09-08 20:11) [8]> jack128_ (08.09.2007 20:05:06) [6]
А если в строчном представление?
← →
jack128_ (2007-09-08 21:19) [9]
> А если в строчном представление?
Ну тогда бы почему и числа по из строчным представлениям не сравнивать? ;-)
> 9 >> 1.1 что и подразумевалось.
А что мешает так и написать "1.1" ??
← →
Инс © (2007-09-08 22:47) [10]В общем, накидал я что-то похожее, что выполняет поставленную задачу. Ничего особенного, но работает:
unit IncOnCompileClasses;
interface
uses SysUtils, ToolsAPI;
type
TIncOnCompileWizard = class(TNotifierObject, IOTAWizard)
private
FNotifierID: Integer;
public
// IOTAWizard
function GetIDString: string;
function GetName: string;
function GetState: TWizardState;
procedure Execute;
constructor Create;
destructor Destroy; override;
end;
TIDENotifier = class(TNotifierObject, IOTANotifier, IOTAIDENotifier)
public
// IOTAIDENotifier
procedure FileNotification(NotifyCode: TOTAFileNotification;
const FileName: string; var Cancel: Boolean);
procedure BeforeCompile(const Project: IOTAProject; var Cancel: Boolean); overload;
procedure AfterCompile(Succeeded: Boolean); overload;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterPackageWizard(TIncOnCompileWizard.Create);
end;
function GetActiveProjectGroup: IOTAProjectGroup;
var
ModuleServices: IOTAModuleServices;
i: Integer;
begin
Result := nil;
if Assigned(BorlandIDEServices) then
begin
ModuleServices := BorlandIDEServices as IOTAModuleServices;
for i := 0 to ModuleServices.ModuleCount - 1 do
if Supports(ModuleServices.Modules[i], IOTAProjectGroup, Result) then
Break;
end;
end;
function GetActiveProject: IOTAProject;
var
ProjectGroup: IOTAProjectGroup;
begin
Result := nil;
ProjectGroup := GetActiveProjectGroup;
if ProjectGroup <> nil then
Result := ProjectGroup.ActiveProject;
end;
{ TIncOnCompileWizard }
constructor TIncOnCompileWizard.Create;
begin
inherited Create;
FNotifierID:=(BorlandIDEServices as IOTAServices).AddNotifier(TIDENotifier.Create);
end;
destructor TIncOnCompileWizard.Destroy;
begin
if FNotifierID <> -1 then
(BorlandIDEServices as IOTAServices).RemoveNotifier(FNotifierID);
inherited Destroy;
end;
procedure TIncOnCompileWizard.Execute;
begin
end;
function TIncOnCompileWizard.GetIDString: string;
begin
Result:="IncOnCompileWizard";
end;
function TIncOnCompileWizard.GetName: string;
begin
Result:="IncOnCompileWizard";
end;
function TIncOnCompileWizard.GetState: TWizardState;
begin
Result:=[wsEnabled];
end;
{ TIDENotifier }
procedure TIDENotifier.AfterCompile(Succeeded: Boolean);
begin
end;
procedure TIDENotifier.BeforeCompile(const Project: IOTAProject;
var Cancel: Boolean);
var
Build: Variant;
begin
Build:=GetActiveProject.ProjectOptions.Values["Build"];
GetActiveProject.ProjectOptions.Values["Build"]:=Build + 1;
end;
procedure TIDENotifier.FileNotification(NotifyCode: TOTAFileNotification;
const FileName: string; var Cancel: Boolean);
begin
end;
end.
← →
DrPass © (2007-09-08 23:23) [11]
> Инс © (08.09.07 22:47) [10]
Тогда при выполнении Build количество билдов будет на 2 увеличиваться :)
← →
Инс © (2007-09-08 23:25) [12]
> Тогда при выполнении Build количество билдов будет на 2
> увеличиваться :)
Если галочку поставить - то да. Но это исправимо :) Будет автору домашним заданием :)
Страницы: 1 вся ветка
Текущий архив: 2007.10.07;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.024 c