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

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

Аватара для R.i.m.s.k.y.

Ветеран


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

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


есть такая функция сравнения версий
Код: Выделить весь код
function CompareVersion(VerMStoCompare, VerLStoCompare: Cardinal; const FileName2: string): Integer;
{ Данная функция сравнивает версии файлов указанных в FileName1 и FileName2.
  Возвращаемые значения:
    -2: если не смогли прочитать версию любого из файлов;
    -1: FileName1 > FileName2;
     0: FileName1 = FileName2;
     1: FileName1 < FileName2;
     FileName1 = передаваемые числа версий для сравнения с файлом FileName2, условия теже:
     -1: файл "старый"
      0: версии равны
      1: файл новее}
     
var
  VerMS1, VerLS1, VerMS2, VerLS2: Cardinal;
  fMS1, fLS1, fMS2, fLS2: Extended;
begin
  Result := -2; VerMS1 := VerMStoCompare; VerLS1 := VerLStoCompare;
  if GetVersionNumbers(FileName2, VerMS2, VerLS2)
     //and GetVersionNumbers(FileName2, VerMS2, VerLS2)
     then
    begin
      fMS1 := StrToFloat(IntToStr(VerMS1 shr 16) + '.' + IntToStr(VerMS1 and $FFFF));
      fLS1 := StrToFloat(IntToStr(VerLS1 shr 16) + '.' + IntToStr(VerLS1 and $FFFF));
      fMS2 := StrToFloat(IntToStr(VerMS2 shr 16) + '.' + IntToStr(VerMS2 and $FFFF));
      fLS2 := StrToFloat(IntToStr(VerLS2 shr 16) + '.' + IntToStr(VerLS2 and $FFFF));
      case fMS1 = fMS2 of
        True:
          case fLS1 = fLS2 of
            True : Result := 0;
            False:
              case fLS1 > fLS2 of
                True : Result := -1;
                False: Result := 1;
              end;
          end;
        False:
          case fMS1 > fMS2 of
            True : Result := -1;
            False: Result := 1;
          end;
      end;
    end;
//    MsgBox(FileName2 + #13#10 +
//           'VerMS1 = ' + IntToStr(VerMS1) + ' VerLS1 = ' + IntToStr(VerLS1) + #13#10 +
//           'VerMS2 = ' + IntToStr(VerMS2) + ' VerLS2 = ' + IntToStr(VerLS2) + #13#10 +
//           IntToSTR(Result), mbInformation, MB_OK);
end;
в ней ошибка: версия 1,0,0,6 будет БОЛЬШЕ чем 1,0,0,20
Подскажите, пожалуйста, как исправить

______________________

Farser21, прятать надо не под спойлер, а под тег code
Код: Выделить весь код
function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result := True;
  case CurPageID of
  wpSelectDir:
    if not FileExists(ExpandConstant('{app}\WorldOfTanks.exe')) then begin
      MsgBox('Сюда установить компоненты нельзя!', mbError, MB_OK);
      Result := False;
   end; //if
   if FileExists(ExpandConstant('{app}')+'\WorldOfTanks.exe') then begin
     if FileVersion(ExpandConstant('{app}')+'\WorldOfTanks.exe') < '0.9.0' then begin
     MsgBoxEx(WizardForm.Handle, 'Моды не будут работать на данной версии игры! Моды предназначены для версии патча 0.9.0 ', 'Моды не подходят у данному патчу World of Tanks', MB_OK or MB_ICONWARNING, 0, 0);
    Result:= false;
   end;end;//if
end;//case
end;
кстати когда я пропустил момент что инно научился сравнивать текстовые переменные знаками неравенства?

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Последний раз редактировалось R.i.m.s.k.y., 10-03-2014 в 14:54.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:45, 10-03-2014 | #5