Ветеран
Сообщения: 1133
Благодарности: 581
|
Профиль
|
Отправить PM
| Цитировать
Цитата dracosha:
что б при обновлении Major или Minor обновление было не доступно, а если в версии обновлены только Build и Revis, а Major и Minor не обновлялись то обновление было доступно »
|
Если я правильно понял, то так:
читать дальше »
Код: ![Выделить весь код](images/misc/selectcode.png)
const
MyAppVerMajor = 1;
MyAppVerMinor = 2;
MyAppVerBuild = 3;
MyAppVerRevis = 4;
function IsPreviousVersionUpdatable(): Boolean;
var
version: string;
major, minor, build, revis: Integer;
begin
Result := False;
if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + GetAppID('') + '_is1', 'DisplayVersion', version) then
begin
major := StrToInt(Copy(version, 1, Pos('.', version) - 1));
Delete(version, 1, Pos('.', version));
minor := StrToInt(Copy(version, 1, Pos('.', version) - 1));
Delete(version, 1, Pos('.', version));
build := StrToInt(Copy(version, 1, Pos('.', version) - 1));
Delete(version, 1, Pos('.', version));
revis := StrToInt(Copy(version, 1, Pos('.', version) - 1));
Delete(version, 1, Pos('.', version));
if (major <= MyAppVerMajor) and (minor <= MyAppVerMinor) then
Result:= (build < MyAppVerBuild) or (revis < MyAppVerRevis);
end;
end;
Сразу замечание по коду, строка начинается с 1, а массивы обычно с 0, т.е.:
Цитата dracosha:
major := Copy(version, 0, Pos('.', version) - 1); »
|
грубейшая ошибка, копировать можно только с первого символа!
|
-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.
Отправлено: 15:20, 05-08-2010
| #2169
|