Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 1133
Благодарности: 581

Профиль | Отправить PM | Цитировать


Цитата dracosha:
что б при обновлении Major или Minor обновление было не доступно, а если в версии обновлены только Build и Revis, а Major и Minor не обновлялись то обновление было доступно »
Если я правильно понял, то так:
читать дальше »
Код: Выделить весь код
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