Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VS: счётчик версий 
V
    Опции темы
Rickert
Дата 3.4.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: нет
Всего: 52



Не, ребят, спасиб конечно за усердия, но я думал есть простая утилита внутри VS. Раз нет - вопрос снят. Спасибо за дискуссию!
solved smile 


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
GremlinProg
Дата 3.4.2009, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(Rickert @  3.4.2009,  21:54 Найти цитируемый пост)
я думал есть простая утилита внутри VS

теперь есть, и именно внутри VS

но в принципе я тебя понимаю: кому-то и линукс - не виндовс, а кому и API - не басик


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GremlinProg
Дата 6.4.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



сделал еще несколько апгрейдов:

1. увеличение счетчика теперь производится прямо в тексте скрипта, VerBuilder теперь ++,
доступны следующие команды:
%%++<счетчик>
%%<счетчик>++
это, соответственно префиксная и постфиксная формы
<счетчик> - любой из регистров: qw, dw.0, dw.1, w.0 ,w.1 и т.д.
2. введен "скрытый режим", в котором отключается вывод в файл <output>:
Код

%<*    - открывает скрытый режим
%*>    - закрывает скрытый режим

3. добавлена поддержка русских символов
в принципе, это актуально только для stdout'а,
т.е. в консоли MSVC "output" теперь русские кракозябры читаемы,
можно спокойно писать комментарии на родном, албанском )
4. адаптирована поддержка как для ANSI, так и для Юникод-среды, но если вам вдруг понадобятся двухбайтовые кодировки, то ANSI их не понимает, для такого нужно компилировать в юникоде
5. флаг -r - остался с прежней нагрузкой: не модифицирует версию для следующего билда (не сохраняет изменения на диске), хотя теперь это можно делать и скриптовыми инструментами
6. если есть ошибки в скрипте, то они оформляются в стандартном формате для MSVC: "файл(номер строки): описание", так вы уже точно не потеряетесь, прямо в среде, двойной клик на такой строке переместит вас в шаблон на строку с ошибкой

таким образом, все фишки можно одним махом оценить следующим скриптом:
Код

%<<
    Этот текст пойдет в <output>
    %<*
        а этот текст в <output> НЕ пойдет
        
        префиксное увеличение восьмибайтового счетчика
        %%++qw        = %++qw
        
        префиксное увеличение четырехбайтовых счетчиков
        %%++dw.0    = %++dw.0
        %%++dw.1    = %++dw.1
        
        префиксное увеличение двухбайтовых счетчиков
        %%++w.0        = %++w.0
        %%++w.1        = %++w.1
        %%++w.2        = %++w.2
        %%++w.3        = %++w.3
        
        префиксное увеличение байтовыех счетчиков
        %%++b.0        = %++b.0
        %%++b.1        = %++b.1
        %%++b.2        = %++b.2
        %%++b.3        = %++b.3
        %%++b.4        = %++b.4
        %%++b.5        = %++b.5
        %%++b.6        = %++b.6
        %%++b.7        = %++b.7
        
        постфиксное увеличение восьмибайтового счетчика
        %%qw++        = %qw++
        
        постфиксное увеличение четырехбайтовых счетчиков:
        %%dw.0++    = %dw.0++
        %%dw.1++    = %dw.1++
        
        постфиксное увеличение двухбайтовых счетчиков:
        %%w.0++        = %w.0++
        %%w.1++        = %w.1++
        %%w.2++        = %w.2++
        %%w.3++        = %w.3++
        
        постфиксное увеличение байтовых счетчиков:
        %%b.0++        = %b.0++
        %%b.1++        = %b.1++
        %%b.2++        = %b.2++
        %%b.3++        = %b.3++
        %%b.4++        = %b.4++
        %%b.5++        = %b.5++
        %%b.6++        = %b.6++
        %%b.7++        = %b.7++

        Текущая версия : %w.3.%w.2.%w.1 [%w.0]
    %*>
%>>
VS_VERSION_INFO VERSIONINFO
FILEVERSION        %w.3,%w.2,%w.1,%w.0
PRODUCTVERSION    %w.3,%w.2,%w.1,%w.0
FILEFLAGSMASK    0x3fL

если у вас уже есть начатый счетчик, то просто поставьте временно для него флаг -r(readonly), чтобы этот скрипт его не сбил

Это сообщение отредактировал(а) GremlinProg - 6.4.2009, 14:49

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  main.cpp 12,43 Kb


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GremlinProg
Дата 6.4.2009, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



модификация в скрипте сделана для того, чтобы не ковыряться в ini-файле, увеличивая старшие версии по ситуации (число изменений, число исправленных ошибок и т.п.) их же обычно вручную ставят, а так вот будет подспорье без выковыривания старших, младших версий в hex-форме

кому не охота все это собирать, прилагаю бинарник, скомпилированный в юникод-среде
кто понимает, о чем речь, могут сами собрать (или собрать из этого что-нибудь более интересное);

функция translate теперь имеет более демократичную форму, по спецификации scanf:
Код

bool translate(_TCHAR**lpszInput,size_t ilen,int*marker,LPCTSTR lpszFormat,...)

так, вы можете добавлять свои шаблоны, с одним лишь условием:
формат шаблона для translate должен заканчиваться последовательностью %n - это маркер позиции, а параметр для него - адрес переменной marker

да, еще одно замечание: этот исходник корректен, если его компилировать уже только в девятой версии MSVC, поскольку от седьмой она отличается стандартными объявлениями функций _winput_s_l и _input_s_l,
если вам нужно собрать исходник в седьмой - ищите соответствующие прототипы, все есть в SDK (ну и на форуме я их выкладывал)

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  VerBuilder__.rar 47,52 Kb


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
voov
Дата 21.6.2010, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Патамушта мы пилоты
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 29.11.2007

Репутация: нет
Всего: 8



Цитата(GremlinProg @  3.4.2009,  12:53 Найти цитируемый пост)
как это работает:
1. подключаем в проект простой текстовый файл
2. пишем в нем нечто вроде такого:
...
3. Сохраняем, щелкаем на этом файле правой кнопкой мыши в Solution Explorer'е, выбираем Properties
4. Выбираем все конфигурации, ну или Release, кому как удобнее
5. Раскрываем Custom Build Step :: General
6. В Command Line пишем VerBuilder "$(InputName).ini" "$(InputFileName)"  "$(InputName).rc"
7. В Outputs пишем $(InputName).rc
8. Сохраняем настройки и нажимаем Ctrl + F7 (компиляция ресурса). Если все сделано правильно, то в директории, где лежит этот текстовый файл появятся два дополнительных файла с тем же именем, но с расширениями .ini и .rc
9. Снова открываем  Solution Explorer и добавляем в него файл(с расширением .rc

Ну вот и все, теперь при каждом билде, этот ресурс будет обновляться в соответствии с новой версией


При билде версия обновляется только, если был изменен текстовый файл (созданный на шаге 1). Как сделать, чтобы она обновлялась при каждом билде?
PM MAIL   Вверх
jonie
Дата 21.6.2010, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 7
Всего: 118



GremlinProg, и вообще проект на github или bitbuket - пусть там живет )


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
GremlinProg
Дата 22.6.2010, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(voov @  21.6.2010,  20:29 Найти цитируемый пост)
ри билде версия обновляется только, если был изменен текстовый файл (созданный на шаге 1). Как сделать, чтобы она обновлялась при каждом билде?

я прикрепил корректно настроенную заготовку проекта,
только VerBuilder.exe заменил на vc.exe - так проще и понятнее,

так что просто переименуй VerBuilder.exe в vc.exe
напоминаю, он должен быть расположен где-нибудь здесь: ...\Common7\Tools\
Цитата(jonie @  21.6.2010,  21:24 Найти цитируемый пост)
и вообще проект на github или bitbuket - пусть там живет )

в принципе можно, репозиторий я создам,

мелочь конечно, хотя с svn и не сравнится
но я до сих пор пользуюсь этой штукой: среди десятков одинаковых с виду билдов разбирать где-что реализовано а где нет без нее проблематично

Присоединённый файл ( Кол-во скачиваний: 19 )
Присоединённый файл  vc_test.rar 3,07 Kb


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GremlinProg
Дата 22.6.2010, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



репозиторий создан здесь: http://github.com/mega-t72/vc/


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Maxepsut
Дата 23.9.2011, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.9.2011

Репутация: нет
Всего: нет



Цитата
я прикрепил корректно настроенную заготовку проекта,
только VerBuilder.exe заменил на vc.exe - так проще и понятнее,... 

GremlinProg, большое спасибо за код! 

Нарочно здесь зарегился, чтобы его скачать, но что-то не выходит: вместо файла с архивом открывается HTML-файл, с которым неизвестно что делать...

Подскажите, пожалуйста, что не так.

P.S. Заодно уж сразу: в каких версиях Visual Studio это работает? Конкретно интересуют: v.6.0 и 2008.


Это сообщение отредактировал(а) Maxepsut - 23.9.2011, 11:59
PM MAIL   Вверх
GremlinProg
Дата 23.9.2011, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(Maxepsut @  23.9.2011,  13:54 Найти цитируемый пост)
вместо файла с архивом открывается HTML-файл, с которым неизвестно что делать...

заготовка есть на github: http://github.com/mega-t72/vc/
жмем Downloads, Download .zip

в скаченном архиве папка test, это и есть заготовка

Добавлено через 9 минут и 23 секунды
Цитата(Maxepsut @  23.9.2011,  13:54 Найти цитируемый пост)
в каких версиях Visual Studio это работает?

по крайней мере с 6-й версии vc.exe можно подключить к любому проекту,
но его последние исходники уже адаптированы под vs2008, поэтому, если охота что-то дописать в самом vc, следует открывать его проект в 2008 и выше
Цитата(Maxepsut @  23.9.2011,  13:54 Найти цитируемый пост)
Конкретно интересуют: v.6.0 и 2008

работает  smile 


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Maxepsut
Дата 23.9.2011, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.9.2011

Репутация: нет
Всего: нет



Цитата(GremlinProg @  23.9.2011, 12:02 Найти цитируемый пост)
заготовка есть на github: http://github.com/mega-t72/vc/
жмем Downloads, Download .zip

в скаченном архиве папка test, это и есть заготовка
Спасибо! Благополучно скачал и проверил функциональность. 

Цитата(GremlinProg @  23.9.2011, 12:02 Найти цитируемый пост)
по крайней мере с 6-й версии vc.exe можно подключить к любому проекту,
но его последние исходники уже адаптированы под vs2008, поэтому, если охота что-то дописать в самом vc, следует открывать его проект в 2008 и выше
Ясно. А не осталась ли где-то версия vc, которую можно дописать и в 6-ой Студии (к 2008-ой ещё не привык)?

Цитата(GremlinProg @  23.9.2011, 12:02 Найти цитируемый пост)
Цитата(Maxepsut @  23.9.2011,  11:54 Найти цитируемый пост)
Конкретно интересуют: v.6.0 и 2008

работает  smile
Большое спасибо! 

Всё вроде бы действительно работает как часы, за одним исключением, о котором на всякий случай уточню. 

Это так и должно быть, что если при перепостроении тестового проекта у меня открыто Окно ресурсов (сам RC-файл не открыт), и на вопрос Студии: "Заменить RC-файл?" я отвечаю "Да", она тутже слетает? Хотя файл изменяется. 

И вообще: можно ли как-нибудь избежать этих вопросов, которые также относятся к сформулированному выше утверждению: 

Цитата(Rickert @  2.4.2009, 10:50  Найти цитируемый пост)
Dem_max, неудобно. ИМХО: номер версии - это вещь о которой программист вообще задумываться не должен ни на одну наносекунду.


P.S. И пара процедурных моментов: 

1) как здесь полноценно пользоваться Цитатой? У меня так и не получилось цитировать других участников с автоматической вставкой их имён и ссылок на их сообщения (как это само происходит в других форумах): всё делал вручную...

2) как отключить встроенное автоисправление грамматики smile

Это сообщение отредактировал(а) Maxepsut - 23.9.2011, 12:43
PM MAIL   Вверх
GremlinProg
Дата 23.9.2011, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(Maxepsut @  23.9.2011,  14:41 Найти цитируемый пост)
Ясно. А не осталась ли где-то версия vc, которую можно дописать и в 6-ой Студии (к 2008-ой ещё не привык)?

нет, а ее и не было )
первые варианты написаны уже в 2005-й
Цитата(Maxepsut @  23.9.2011,  14:41 Найти цитируемый пост)
Это так и должно быть, что если при перепостроении тестового проекта у меня открыто Окно ресурсов (сам RC-файл не открыт), и на вопрос Студии: "Заменить RC-файл?" я отвечаю "Да", она тутже слетает? Хотя файл изменяется. 

у меня не слетает, но возможно потому, что я смотрю это в 2010-й студии

могу предложить другой вариант включения version.rc в проект:

1. удаляем version.rc из проекта
2. создаем новый файл ресурсов, например: vc-test.rc
3. открываем version.txt и добавляем в конец пустую строку, сохраняем version.txt (так требует rc, по крайней мере, у меня)
4. открываем диалог "Resource includes..." для vc-test.rc и добавляем в "Read-only symbol directives" строку
Код

#include "version.rc"

все, теперь в заготовке есть обычные ресурсы и ресурс vc

Добавлено через 9 минут и 49 секунд
 smile 
Цитата(Maxepsut @  23.9.2011,  14:41 Найти цитируемый пост)
как здесь полноценно пользоваться Цитатой?

выделяешь текст в сообщении и жмешь кнопку "быстрая цитата", правильная цитата будет вставылена в поле быстрого ответа


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Maxepsut
Дата 23.9.2011, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.9.2011

Репутация: нет
Всего: нет



Цитата(GremlinProg @  23.9.2011,  13:09 Найти цитируемый пост)
нет, а ее и не было )
первые варианты написаны уже в 2005-й
Ясно. Чтож, тем больше поводов для перехода на 2008-ю.


Цитата(GremlinProg @  23.9.2011,  13:09 Найти цитируемый пост)
могу предложить другой вариант включения version.rc в проект:

1. удаляем version.rc из проекта
2. создаем новый файл ресурсов, например: vc-test.rc
3. открываем version.txt и добавляем в конец пустую строку, сохраняем version.txt (так требует rc, по крайней мере, у меня)
...
В этом пункте, наверное, имелся в виду не 'version.txt', а 'version.rc'? Во всяком случае, 2008-я ругнулась у меня на него. 

Цитата(GremlinProg @  23.9.2011,  13:09 Найти цитируемый пост)
4. открываем диалог "Resource includes..." для vc-test.rc и добавляем в "Read-only symbol directives" строку
... 
все, теперь в заготовке есть обычные ресурсы и ресурс vc.
Всё так и сделал, ресурс забилдился, но на этапе Компоновки появилась ошибка: 

Код

1>CVTRES : fatal error CVT1100: duplicate resource.  type:VERSION, name:1, language:0x0419
1>LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден

Откуда взялось это "дублирование ресурсов"?
PM MAIL   Вверх
GremlinProg
Дата 25.9.2011, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(Maxepsut @  23.9.2011,  15:43 Найти цитируемый пост)
В этом пункте, наверное, имелся в виду не 'version.txt', а 'version.rc'? Во всяком случае, 2008-я ругнулась у меня на него. 

нет, именно version.txt, т.к. на его основе и создается version.rc,
в version.rc делать каких-либо изменений нет смысла, т.к. он всякий раз пересоздается, при компиляции шаблона

version.txt - шаблон
version.rc - результат применения шаблона
Цитата(Maxepsut @  23.9.2011,  15:43 Найти цитируемый пост)
Всё так и сделал, ресурс забилдился, но на этапе Компоновки появилась ошибка

я это делал в 2010 студии, там ошибок не было, возможно в ранних версиях следует создать проект заново, попробую завтра сделать это в 2008-й


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
GremlinProg
Дата 26.9.2011, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(GremlinProg @  25.9.2011,  19:55 Найти цитируемый пост)
попробую завтра сделать это в 2008-й

в 2008 тоже все прошло без ошибок ( видимо, это был какой-то единичный сбой ),

я обновил репозиторий, добавил еще одну заготовку " test-hidden-mode",
уже со всеми изменениями, описанными выше


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1582 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.