![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить версию приложения
neveGreen © (2008-12-15 15:30:00)Как получить версию приложения которое исполняется и версию exe файла и сравнить их потом? Применяется для обновления программы.
neveGreen (2008-12-15 17:21:00) [21]
> Palladin © (15.12.08 17:18) [20]
Дак я передаю в нее Simple= True и сравниваю результаты, тоесть строки в формате x.x.x.x - или Вы знаете проще способ?
Palladin (2008-12-15 17:18:00) [22]Зачем тебе строки сравнивать? Сравнивай значения версий. Я функцию для примера привел, как получить информации о версии.
neveGreen (2008-12-15 17:10:00) [23]Благодарю. А еще такой ворос - фактически функция сравнения может сравнить на ">" две полученных строки - строки версии текущего приложения и строки версии другого exe файла.
function VersionCompire(NewVersion, CurrVersion: String): Boolean;
begin
if NewVersion > CurrVersion then
Result := True
else
Result := False;
end;
Palladin (2008-12-15 16:34:00) [24]PChar(s) - имя фала
l - не значит ничего, просто заглушка, но по задумке MS там должно быть значение полученное при GetFileVersionInfoSize
nSize - размер блока данных версии, полученный GetFileVersionInfoSize
buf - указатель по которому нужно расположить данные версии
> VerQueryValue не могу найти в хелпе
эти функции принадлежат Window SDK, в соответствующей справке и ищи
clickmaker (2008-12-15 16:32:00) [25]они в Win32 SDK reference
neveGreen (2008-12-15 16:29:00) [26]
> какой конкретно вопрос?
Объясните пожалуйста параметры функций
GetFileVersionInfo(PChar(S),l,nSize,Buf) и
VerQueryValue не могу найти в хелпе
Palladin (2008-12-15 16:25:00) [27]
> neveGreen (15.12.08 16:12) [13]
какой конкретно вопрос?
> Palladin забыл, что функция может вернуть нулевое значение
есть такое дело, только не забыл, а просто не стал проверять... обращаясь к функции, я всегда знаю, что информация о версии есть... хотя по хорошему, конечно надо... да и одна переменная, в принципе, лишняя..
tesseract (2008-12-15 16:15:00) [28]
> Вы вкратце объяснить алгоритм работы с памятью в этом примере.
Смотрим GetFileVersionInfoSize - выделяем сколько она вернула, запускаем функцию, получаем данные, свобождаем буфер. Palladin забыл, что функция может вернуть нулевое значение и не проводит сравнение с нулем nSize. Всё.
neveGreen (2008-12-15 16:12:00) [29]
> Palladin © (15.12.08 16:02) [9]
точно не записано...
Большое спасибо, а не могли бы Вы вкратце объяснить алгоритм работы с памятью в этом примере.
Anatoly Podgoretsky (2008-12-15 16:10:00) [30]
> какая то ошибка при работе с version.dll
Странная у тебя система, и ругается больно зверски.
Anatoly Podgoretsky (2008-12-15 16:10:00) [31]
> какая то ошибка при работе с version.dll
Странная у тебя система, и ругается больно зверски.
Сергей М. (2008-12-15 16:03:00) [32]
> какая то ошибка при работе с version.dll
>
Т.е. ты вызвал эту функцию и вместа ожидаемого результата увидел сообщение, дословнозвучащее как "какая то ошибка при работе с version.dll", так ?
Palladin (2008-12-15 16:02:00) [33]"какая то ошибка при работе с version.dll" может говорить лишь о том, что в ресурсах данных о версии не содержится.
neveGreen (2008-12-15 16:02:00) [34]в строке l1 := vi.dwFileVersionMS;
neveGreen (2008-12-15 16:00:00) [35]
> neveGreen (15.12.08 15:56) [4]
какая то ошибка при работе с version.dll
neveGreen (2008-12-15 15:59:00) [36]
> KilkennyCat © (15.12.08 15:51) [3]
Да, я имею ввиду текущей программой сравнить ее же обновление в другом каталоге, если версия в каталоге больше то текущую поменять. Надо определить текущую работающую версию "из нутри" и определить версию другого файла.
Palladin (2008-12-15 15:58:00) [37]
> neveGreen (15.12.08 15:56) [4]
ну прям как приговор, у меня уж три года как работает, а тут пришел индивидуум, приговорил, и даже, наверно в ФСБ работает, суть ошибки не раскрыл... от ведь... поколение секретов
neveGreen (2008-12-15 15:56:00) [38]
> Palladin © (15.12.08 15:35) [1]
не работает
KilkennyCat (2008-12-15 15:51:00) [39]
> tesseract ©
вероятно, автор имеет ввиду данные текущего ехешника и нового.
tesseract (2008-12-15 15:36:00) [40]
> Как получить версию приложения которое исполняется и версию
> exe файла
А это не одно и тоже случаем ? смотри GetFileVersionInfo + VS_VERSIONINFO