AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OS Version Windows 10 ermitteln.

Ein Thema von Gerd01 · begonnen am 7. Aug 2015 · letzter Beitrag vom 18. Jun 2019
Antwort Antwort
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

AW: OS Version Windows 10 ermitteln.

  Alt 6. Sep 2017, 23:44
Ein Beispiel:
Wenn ich die API Funktion GetServiceTimes verwende, benötigt man für das Programm mindestens XP mit SP3. Statt deshalb eine Prüfung einzubauen, ob es sich mindestens um XP mit SP3 handelt, prüfe ich einfach ob die benötigte Funktion da ist. Ist sie es nicht, fehlt sie mir, ergo zeige ich einen Fehler an, dass das System nicht unterstützt wird.

Das hat dann den Vorteil, dass es unter allen WindowsVersionen klappt, und zwar auch dann, wenn die Funktion später einmal entfernt würde...
Wenn man auf die Windowsversion prüft, bekommt man das nicht mit.
Hierbei wird aber nicht auf eine Funktionalität, sondern nur auf einen Funktionsnamen (bzw. dessen Vorhandensein) geprüft. Namen sind jedoch Schall und Rauch. Vermutlich wird MS keine leeren Funktionen als Veralberung anbieten (oder doch, für irgendwelche "Testzwecke"?)...Worauf ich hinauslaufen möchte, ist, daß sich die Funktionalität hinter den Funktionsnamen auch ändern kann - was dann?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.976 Beiträge
 
Delphi 12 Athens
 
#2

AW: OS Version Windows 10 ermitteln.

  Alt 7. Sep 2017, 02:55
Betreff der Diskussionen zur Notwendigkeit (& Richtigkeit) einer Versionsprüfung gebe ich aus meiner Sicht z.B. die "WLAN-API" mal zu Bedenken.
Dort gibt es seit XP über Vista, Win 7 und Win 8 je Version neue Funktionen, wo es schon Wissenswert ist, welches OS läuft und welche Funktionalität das Proggie damit noch gewährleisten kann
Genau, es gab immer wieder neue Funktionen in der Native WiFi API. Möchte man die nutzen, kann man ja problemlos prüfen, ob es die gibt. Genau das war doch der Kern der Diskussion.

Worauf ich hinauslaufen möchte, ist, daß sich die Funktionalität hinter den Funktionsnamen auch ändern kann - was dann?
Ein solcher Fall ist mir noch nicht begegnet. Selbst die alten Win 3.x KompatibilitätsFunktionen simulieren noch die Funktionalität von damals. Und deshalb gibt es ja diverse Funktionen mit dem Suffix Ex usw. um eben die Originalfunktion nicht zu ändern.

//edit:
Bzw. Änderungen gab es schon, aber bei den Funktionen ist dann dokumentiert wie man die korrekte Buffergröße abfragen kann oder man kann auf die Unterstützung eines neuen Interfaces prüfen usw.
Z.B. gibt es ja diverse Versionen für die Enumerierung von Netzwerkressourcen. Aber auch da braucht man keine Prüfung auf die Windowsversion, wenn man das korrekt umsetzt.

Auch in unseren eigenen Interfaces und DLL Schnittstellen gibt es keine breaking changes, sondern nur kompatible Erweiterungen bzw. neue Interfaceversionen.

//edit
Natürlich gab es auch Fehler in Funktion in verschiedenen Windows Versionen. Aber in den Fällen macht es dann viel mehr Sinn auf die DLL Version zu prüfen, in der die Funktion enthalten ist, wenn man dafür Workarounds implementiert hat.
Sebastian Jänicke
AppCentral

Geändert von jaenicke ( 7. Sep 2017 um 03:56 Uhr)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: OS Version Windows 10 ermitteln.

  Alt 7. Sep 2017, 10:54
Nun, "automatisch" muß sich die Funktionalität der Funktionen spätestens beim Sprung in die nächste Bitklasse (64->128) wiederum ändern.....
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.976 Beiträge
 
Delphi 12 Athens
 
#4

AW: OS Version Windows 10 ermitteln.

  Alt 7. Sep 2017, 12:11
Nun, "automatisch" muß sich die Funktionalität der Funktionen spätestens beim Sprung in die nächste Bitklasse (64->128) wiederum ändern.....
Ich weiß nicht warum du vermutest, dass es dort anders läuft als bei 32-Bit zu 64-Bit, wo das nicht der Fall war. Ich habe bisher keine entsprechenden Ankündigungen gesehen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: OS Version Windows 10 ermitteln.

  Alt 7. Sep 2017, 14:28
Nun, "automatisch" muß sich die Funktionalität der Funktionen spätestens beim Sprung in die nächste Bitklasse (64->128) wiederum ändern.....
Ich weiß nicht warum du vermutest, dass es dort anders läuft als bei 32-Bit zu 64-Bit, wo das nicht der Fall war. Ich habe bisher keine entsprechenden Ankündigungen gesehen.
Na ganz einfach, weil sich die Argumenten und / oder die Funktionswerte der Funktionen ändern!

Nicht alle Typen sind "mitwachsend".

Ich fand es positiv, daß Borland "mitwachsende" (=generische) Integervariablen einführte, Cardinal und das schon ältere Integer. Waren mit Delphi 1 bzw. Turbo-/Borland-Pascal 16 Bit (womöglich sogar nur 8 Bit auf Mikrocomputern). Mit Delphi 2 wuchsen diese auf 32 Bit an. Leider blieb Embarcadero dieser Linie nicht treu, kein Mitwachsen auf 64 Bit ab XE2.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.976 Beiträge
 
Delphi 12 Athens
 
#6

AW: OS Version Windows 10 ermitteln.

  Alt 7. Sep 2017, 14:38
Na ganz einfach, weil sich die Argumenten und / oder die Funktionswerte der Funktionen ändern!

Nicht alle Typen sind "mitwachsend".
Deshalb werden in der Windows API ja auch überall eindeutige Typen (mitwachsend oder nicht) benutzt und keine Metatypen wie Integer, bei denen das nicht klar ist / war...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 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