Wunsch: Funktion zum Vergleich von Versionsnummern

Antworten
Benutzeravatar
embl-structures
Beiträge: 327
Registriert: 13 Jan 2010, 18:41
Wohnort: Heidelberg
Kontaktdaten:

Wunsch: Funktion zum Vergleich von Versionsnummern

Beitrag von embl-structures »

Der Vergleich von Versionsnummern (2.4.5, 7.8B3, 1.2_c, 9.0.1 (DE), etc.) ist sehr muehsam und fehleranfaellig. Es waere sehr praktisch, wenn solche Funktionen direkt in wInst zur Verfuegung stehen wuerden.

Gruss
frank
Benutzeravatar
r.roeder
uib-Team
Beiträge: 540
Registriert: 02 Jul 2008, 10:08

Re: Wunsch: Funktion zum Vergleich von Versionsnummern

Beitrag von r.roeder »

Hallo,

was wäre denn der Algorithmus für einen
Vergleich von Versionsnummern (2.4.5, 7.8B3, 1.2_c, 9.0.1 (DE), etc.)
Der winst kann das in der Funktion requiredWinstVersion für seine eigene Versionsnummer - aber da ist bekannt, wie sie aufgebaut ist. Im Prinzip werden String-Vergleich für jeden der durch Punkt getrennten Abschnitte durchgeführt. Ist das ein allgemeintaugliches Verfahren?

Gruß,

Rupert Röder
opsi support - uib gmbh
For productive opsi installations we recommend maintainance + support contracts which are the base of opsi development.


Wondering who's using opsi? Have a look at the opsi map: http://opsi.org/opsi-map/.
Benutzeravatar
embl-structures
Beiträge: 327
Registriert: 13 Jan 2010, 18:41
Wohnort: Heidelberg
Kontaktdaten:

Re: Wunsch: Funktion zum Vergleich von Versionsnummern

Beitrag von embl-structures »

r.roeder hat geschrieben:was wäre denn der Algorithmus für einen
Vergleich von Versionsnummern (2.4.5, 7.8B3, 1.2_c, 9.0.1 (DE), etc.)
Im Detail hatte ich mir das noch nicht ueberlegt. Sicher ist 2.5.5>2.4.5>2.4.3. Aber das scheint wInst wie Sie schreiben, bereits in dieser Art zu handhaben. Komplexere Versionsnummern werden auch von den Entwicklern nicht immer gleich behandelt. Mal ist 1.2b>1.2, mal 1.2b<1.2....Vielleicht war der Vorschlag doch zu unausgegoren (entstanden beim Schreiben eines wInst-Skriptes). Ich denke, mit dem Standard-Stringvergleich von wInst kann ich erst mal leben.

frank
Benutzeravatar
embl-structures
Beiträge: 327
Registriert: 13 Jan 2010, 18:41
Wohnort: Heidelberg
Kontaktdaten:

Re: Wunsch: Funktion zum Vergleich von Versionsnummern

Beitrag von embl-structures »

Ich mache in diesem Thread weiter obwohl es jetzt eigentlich besser ins Support-Forum passen wuerde...
r.roeder hat geschrieben:Im Prinzip werden String-Vergleich für jeden der durch Punkt getrennten Abschnitte durchgeführt. Ist das ein allgemeintaugliches Verfahren?
Ich hatte verstanden, dass das in der aktuellen Implementation der Fall sei. Dass ich also "8.2.0" und "8.2.1" vergleich kann und das korrekte Resultat erhalte. Bei folgendem Code laeuft das Skript aber jedes Mal (!) durch den ersten if-Teil und nie durch den "else"-Teil:

Code: Alles auswählen

[Aktionen]
defvar $v1
defvar $v2

set $v1 = "8.2.0"
set $v2 = "8.2.1"
if ("$v1" < "$v2")
  pause $v1 + " ist kleiner als " + $v2
else
  pause $v2 + " ist kleiner als " + $v1
endif

set $v1 = "8.2.1"
set $v2 = "8.2.0"
if ("$v1" < "$v2")
  pause $v1 + " ist kleiner als " + $v2
else
  pause $v2 + " ist kleiner als " + $v1
endif
Einmal ist also 8.2.1<8.2.0 und dann ist 8.2.0<8.2.1... Was laeuft hier schief?

frank
Benutzeravatar
embl-structures
Beiträge: 327
Registriert: 13 Jan 2010, 18:41
Wohnort: Heidelberg
Kontaktdaten:

Re: Wunsch: Funktion zum Vergleich von Versionsnummern

Beitrag von embl-structures »

Ich habe die Anfrage in Thread viewtopic.php?f=7&t=1223 verlagert
frank
Benutzeravatar
embl-structures
Beiträge: 327
Registriert: 13 Jan 2010, 18:41
Wohnort: Heidelberg
Kontaktdaten:

Re: Wunsch: Funktion zum Vergleich von Versionsnummern

Beitrag von embl-structures »

r.roeder hat geschrieben:Hallo,
was wäre denn der Algorithmus für einen
Vergleich von Versionsnummern (2.4.5, 7.8B3, 1.2_c, 9.0.1 (DE), etc.)
Der winst kann das in der Funktion requiredWinstVersion für seine eigene Versionsnummer - aber da ist bekannt, wie sie aufgebaut ist. Im Prinzip werden String-Vergleich für jeden der durch Punkt getrennten Abschnitte durchgeführt. Ist das ein allgemeintaugliches Verfahren?
Gruß,
Rupert Röder
Ich komme nochmals auf diese Thread zurueck: Fuer WInst (v 4.10.8.0) scheint 3.6.9 >= 3.6.10 zu gelten. Deswegen ist der Stringvergleich wie er in WInst implementiert ist fuer meine Zwecke nicht brauchbar, weil er nur so lange funktioniert, wie die Terme zwischen den Punkten Einziffrig sind.

Ich reduziere die Anfrage also auf Versionsnummern vom Typ "Gruppen von durch Punkten getrennten Ziffern". Wie kann ich solche Versionsnummern vergleichen?

Gruss

frank
Benutzeravatar
j.schneider
uib-Team
Beiträge: 1810
Registriert: 29 Mai 2008, 15:14

Re: Wunsch: Funktion zum Vergleich von Versionsnummern

Beitrag von j.schneider »

Es gibt die Funktion CompareDotSeparatedStrings.

Code: Alles auswählen

if (CompareDotSeparatedStrings("3.6.9", "3.6.10") = 1)
Benutzeravatar
embl-structures
Beiträge: 327
Registriert: 13 Jan 2010, 18:41
Wohnort: Heidelberg
Kontaktdaten:

Re: Wunsch: Funktion zum Vergleich von Versionsnummern

Beitrag von embl-structures »

j.schneider hat geschrieben:Es gibt die Funktion CompareDotSeparatedStrings.

Code: Alles auswählen

if (CompareDotSeparatedStrings("3.6.9", "3.6.10") = 1)
Super! Offenbar ist die Version meines WInst-Handbuches deutlich aelter (version 4.9.0) als meine WInst-Version ;-)

frank
Antworten