![]() |
AW: "Version Compare" / Major/Minorversion Vergleich
Hallo,
Zitat:
Grüße Sebastian |
AW: "Version Compare" / Major/Minorversion Vergleich
Zitat:
|
AW: "Version Compare" / Major/Minorversion Vergleich
Delphi-Quellcode:
:stupid:
{$IF (gsIdVersionMajor > 10) or ((gsIdVersionMajor = 10) and (gsIdVersionMinor > 6)) or ((gsIdVersionMajor = 10) and (gsIdVersionMinor = 6) and (gsIdVersionRelease > 2)) or ((gsIdVersionMajor = 10) and (gsIdVersionMinor = 6) and (gsIdVersionRelease = 2) and (gsIdVersionBuild >= 0))}
Nja, es gibt mehrere Varianten für das Gleiche.
Delphi-Quellcode:
Meistens interessieren Einen nur die erste oder die ersten beiden Stellen (Major und Minor),
gsIdVersion = '10.06.02.01'; // 00-09 mit führender 0 oder Leerzeichen, aber besser die 0
{$IF gsIdVersion >= '10.02.00.00'} {$IF gsIdVersion >= '10.00.00.00'} gsIdVersion = 10060201; {$IF gsIdVersion >= 10020000} {$IF gsIdVersion >= 10000000} gsIdVersion = 10.060201; {$IF gsIdVersion >= 10.02} {$IF gsIdVersion >= 10} da ist dann das Letztere halt einfacher/verständlicher. Nachteil bei all diesen Dingen: Die subversionen dürfen nur Werte von 0 bis 99 haben. Bei String darfs der Major auch nur 0 bis 99, aber dei den Numerischen kann es auch größer/kleiner sein. |
AW: "Version Compare" / Major/Minorversion Vergleich
Hallo,
Zitat:
@himitsu: Ich sehe das tatsächlich in diesem Falle nicht ganz, die Definition von gsIdVersion kommt aus den Indys, da habe ich keinen Einfluss drauf:
Delphi-Quellcode:
und da fehlen bei der Minorversion und dem Release die führende "0".
gsIdVersion = '10.6.2.0'; {do not localize}
Grüße, Sebastian |
AW: "Version Compare" / Major/Minorversion Vergleich
OK, das bei Indy ist vorgegeben,
obwohl? :stupid:
Delphi-Quellcode:
const gsIdVersionNum = gsIdVersionMajor + (gsIdVersionMinor / 100) + (gsIdVersionRelease / 10000) + (gsIdVersionBuild / 1000000);
// oder const gsIdVersionNum = (gsIdVersionMajor * 1000000) + (gsIdVersionMinor * 10000) + (gsIdVersionRelease * 100) + gsIdVersionBuild; Es ging mehr allgemein um Aufbau/Verwendung von Versionnummern im Quelltext, speziell in Compiler-Direktiven, wo keine aufwändigen Stringvergleiche möglich sind. Die String-Version von Indy kann wirklich nicht für einen Vergleich verwendet werden, also größer oder kleiner (außer auf Gleichheit). Außer gsIdVersionMinor/gsIdVersionRelease/gsIdVersionBuild sind niemals größer als 9. |
AW: "Version Compare" / Major/Minorversion Vergleich
Vorallem das Build ist ofrmals größer als 99. (viele Projekte zählen das seit Beginn kontinuierlich hoch)
In den Versionskonstanten stehen daher oftmals nur die ersten zwei oder drei Nummern. (mehr ist auch fast nie nötig) PS: Und die VersionsInfo-Records im Windows bestehen aus WORDs. word.word.word.word 00000000000000000000 00000.000000000000000 '00000.00000.00000.00000' In der Versionsresource gibt es neben den beiden RECORDS (in der .RC ein String mit festem Format) auch nochmal zusätzlich die Versionen als "freier" String. |
AW: "Version Compare" / Major/Minorversion Vergleich
Zitat:
Grüße Sebastian |
AW: "Version Compare" / Major/Minorversion Vergleich
Zitat:
Zum Beispiel in der aktuellen ![]()
Delphi-Quellcode:
Praktisch bedeutet dass, dass man Major/Minor und Release sicher vergleichen kann. Bei der Buildnummer kommt es darauf, an 'woher' die Indy Version kommt.
gsIdVersion = '10.6.2.5448'; {do not localize}
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz