Size: a a a

2020 December 09

СП

Сергей Пятыгин... in Delphi & Lazarus
Задача-как  сравнить версии ПО формата х.х.х.х. Это может быть строка или отдельные числа, integer/string, не важно.
источник

N

Nik in Delphi & Lazarus
Дмитрий Texnix
ну если кривая, чо берёшься то за неё?
Просто при указанном ТЗ такого усложнения не требуется, которое вы все придумываете
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
FileVerInfo.VersionStrings.Values['FileVersion'] выдает версию ПО в формате строки 'х.х.х.х'.
источник

AD

Aleksandr Duduk in Delphi & Lazarus
Сергей Пятыгин
Задача-как  сравнить версии ПО формата х.х.х.х. Это может быть строка или отдельные числа, integer/string, не важно.
А какой результат вывода должен быть?
источник

N

Nik in Delphi & Lazarus
Сергей Пятыгин
Задача-как  сравнить версии ПО формата х.х.х.х. Это может быть строка или отдельные числа, integer/string, не важно.
Примеры покажи. Твоё ТЗ очень кривое
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Aleksandr Duduk
А какой результат вывода должен быть?
Да просто-новее ПО или нет, для обновления.
источник

AS

Alexey Shumkin in Delphi & Lazarus
Сергей Пятыгин
Задача-как  сравнить версии ПО формата х.х.х.х. Это может быть строка или отдельные числа, integer/string, не важно.
Что "это"?
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Alexey Shumkin
Что "это"?
Вопрос.
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Сергей Пятыгин
CSV имеет разделы, как ini?
разделов в csv нет, но можно сделать любое (разумное) число колонок и писать туда повторяющиеся данные
источник

АВ

Александр В... in Delphi & Lazarus
Сергей Пятыгин
FileVerInfo.VersionStrings.Values['FileVersion'] выдает версию ПО в формате строки 'х.х.х.х'.
Если у тебя такая структура, стандартная, то....написать для неё сравнялку, типа хэлпер. И в этом хелпере сравнивать внутрянку, не перегоняя в строку
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Renat Suleymanov
function CompareVersions(const aVersion1, aVersion2: TFileProductVersion): Integer;
begin
 Result:=aVersion1[0]-aVersion2[0];
 if Result=0 then
   Result:=aVersion1[1]-aVersion2[1]
 else
   Exit;
 if Result=0 then
   Result:=aVersion1[2]-aVersion2[2]
 else
   Exit;
 if Result=0 then
   Result:=aVersion1[3]-aVersion2[3];
end;
Но тут уже версия это массив из четерых типа Word

 TFileProductVersion = array[0..3] of word;
Если Result<0, то aVersion1 старее, если Result=0, то -  равны, если Result>0, то aVersion1 новее.
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
https://t.me/Delphi_Lazarus/146273
Мне кажется коротким и изящным. Всем спасибо!
источник

AS

Alexey Shumkin in Delphi & Lazarus
есть ещё изящнее способ ))
ща
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Alexey Shumkin
есть ещё изящнее способ ))
ща
Прошу в "студию".
источник

AS

Alexey Shumkin in Delphi & Lazarus
Сергей Пятыгин
Прошу в "студию".
https://pastebin.com/VPKgqmeh

код для Д2007, поэтому там нет методов рекордов, как это можно сделать сейчас в современных версиях делфи (т.е. функции я бы перенёс в методы записи, но в слепую без ИДЕ я не стал этого делать)
источник

AS

Alexey Shumkin in Delphi & Lazarus
Alexey Shumkin
https://pastebin.com/VPKgqmeh

код для Д2007, поэтому там нет методов рекордов, как это можно сделать сейчас в современных версиях делфи (т.е. функции я бы перенёс в методы записи, но в слепую без ИДЕ я не стал этого делать)
а,  там ещё нет методов "присвоения" из строки..
источник

AS

Alexey Shumkin in Delphi & Lazarus
Сергей Пятыгин
function TFormMain.CheckVersion(Old, New: string): boolean;
var
 OldVersion: array [0..3] of integer;
 NewVersion: array [0..3] of integer;
begin

 OldVersion[0] := StrToInt(ExtractWord(1, Old, ['.']));
 OldVersion[1] := StrToInt(ExtractWord(2, Old, ['.']));
 OldVersion[2] := StrToInt(ExtractWord(3, Old, ['.']));
 OldVersion[3] := StrToInt(ExtractWord(4, Old, ['.']));

 NewVersion[0] := StrToInt(ExtractWord(1, New, ['.']));
 NewVersion[1] := StrToInt(ExtractWord(2, New, ['.']));
 NewVersion[2] := StrToInt(ExtractWord(3, New, ['.']));
 NewVersion[3] := StrToInt(ExtractWord(4, New, ['.']));  

Далее ГУГЛ мне дает не очень изящные решения, на мой взгляд. Мб есть уже проверенное в бою решение?
для этого можно взять , например, отсюда - с ExtractWord )) вполне себе )
источник

AS

Alexey Shumkin in Delphi & Lazarus
zamtmn
заметил что у програмистов (особенно делфистов) часто случается БД головного мозга и они всем и везде начинают твердить про БД
ты вообще не программист, так шта ))))))
источник

SB

Sergey Bodrov in Delphi & Lazarus
Сергей Пятыгин
Задача-как  сравнить версии ПО формата х.х.х.х. Это может быть строка или отдельные числа, integer/string, не важно.
Я это делаю путем перевода в одно целое число. Например, 1.2.34 это 1002034
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Sergey Bodrov
Я это делаю путем перевода в одно целое число. Например, 1.2.34 это 1002034
Такие решения я видел, но в нем необходимо дописывать "нули-разряды", верно?
1.2.34 это 1 002 034.
источник