Имя пользователя:
Пароль:
 

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

Аватара для Johny777

Ветеран


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

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


nik1967,

Цитата nik1967:
) < '2.0.0.1' then »
так не получится (хотя было бы очень практично ! ), тк нужно сравнивать числа а не строку
Пардон я в прошлом говорил что нужно сравнивать стоки, но не знал что
Цитата Mat_y:
допустим версия должна быть выше 2.0.0.1 и если версия ниже »
нужен подробный результат сравнения
вот накатал функцию сравнения версий, по примеру станет ясно что она возвращает и как работает:

читать дальше »
Код: Выделить весь код
const
    FILE_VERSION_STR_LEN = 7;
    
function CompareFileVersions(const AVer, BVer: String): Integer;
var
    i: Integer;
begin
    for i := 1 to FILE_VERSION_STR_LEN do
    begin
        if i and 1 = 0 then Continue; // если порядковый номер в строке чётный, то переходим к след. витку цикла, тк это точка

        Result := Ord(AVer[i]) - Ord(BVer[i]);
        if Result <> 0 then Break;
    end;
end;


procedure InitializeWizard();
var
    iResult: Integer;
begin
    iResult := CompareFileVersions('7.0.0.1', '7.0.0.0');

    if iResult = 0 then MsgBox('Same Version', mbInformation, MB_OK)
    else
    if iResult < 0 then MsgBox('AVer < BVer', mbInformation, MB_OK)
    else
    if iResult > 0 then MsgBox('AVer > BVer', mbInformation, MB_OK);
end;


PS: делал упор на быстродействие

Последний раз редактировалось Johny777, 18-10-2013 в 15:16.

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

Отправлено: 14:04, 18-10-2013 | #1291