есть такая функция сравнения версий
Код:
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;
кстати когда я пропустил момент что инно научился сравнивать текстовые переменные знаками неравенства?