AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

OS Version ermitteln

Ein Thema von Luckie · begonnen am 30. Nov 2010 · letzter Beitrag vom 31. Dez 2010
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#1

AW: OS Version ermitteln

  Alt 30. Nov 2010, 09:31
Windows 7 Professional 32-bit: Passt (Meldung als: Windows 7 Professional Build: 7600 32-bit)
Windows XP Professional SP3 32-bit (VM, "Windows XP-Mode"): Passt NICHT (Meldung als: Windows XP Home Edition Service Pack 3 Build: 2600)
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: OS Version ermitteln

  Alt 30. Nov 2010, 10:23
Im Quellcode habe ich ja die Quelle aus dem MSDN angegeben, wo ich den C Code übersetzt habe. Eventuell habe ich da einen Fehler gemacht.

C:
Code:
if Wert1 & Wert dann
Wurde bei mir zu
if Wert1 AND WERT2 = 0 dann Das könnte eventuell nicht stimmen.

Und die 32/64-BIT Erkennung scheint nicht zu funktionieren.

Da ich nicht alle Versionen testen kann. Würde ich euch bitte doch mal den Code zu debuggen (sollte nicht sehr schwer sein, da es nur Verzweigungen sind) und zu gucken, wo er in den falschen Zweig springt und mir dass dann mitzuteilen.

Warum ich das noch mal mache ist, dass ich die vorgeschlagene Methode zur Bestimmung des Betriebssystems umsetzen wollte. Deswegen auch die 32/64-Bit Erkennung auf diese Weise.

Und Unicode ist es noch nicht, weil ich es hier auf dem Sofa hinter der Front auf dem Netbook mit meinem alten D7 entwickele. Kann man es so ändern, dass es sowohl unter D/ als Ansi compiliert, als auch unter D2010 als Unicode? Welche Datentypen müsste ich da nehmen. String sollte ja als Ansi und Unicode kompilieren.
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (30. Nov 2010 um 10:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: OS Version ermitteln

  Alt 30. Nov 2010, 10:28
C:
Code:
if Wert1 & Wert dann
Wurde bei mir zu
if Wert1 AND WERT2 = 0 dann Das könnte eventuell nicht stimmen.
Das stimmt tatsächlich nicht.
Code:
if (Wert1 & Wert2)
müsste

if (Wert1 and Wert2) <> 0 then

sein. Oder auch

if Boolean(Wert1 and Wert2) then
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: OS Version ermitteln

  Alt 30. Nov 2010, 12:23
Noch mal zu dem C Code:
Code:
if Wert1 & Wert dann
Wie übersetzt man das in Delphi? Eventuell habe ich das falsch Übersetzt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: OS Version ermitteln

  Alt 30. Nov 2010, 12:26
ich denke so ists dann richtig:
if (osvi.wSuiteMask and VER_SUITE_PERSONAL = VER_SUITE_PERSONAL) then Home ist $0200 und Prof ist $0100

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: OS Version ermitteln

  Alt 30. Nov 2010, 12:33
OK. Korrigiert. Bitte noch mal testen. Eventuell behebt das schon einige Fehler.
Angehängte Dateien
Dateityp: zip OSDisplayString.zip (199,8 KB, 27x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: OS Version ermitteln

  Alt 30. Nov 2010, 12:38
Server 2008R2 Enterprise

[Window Title]
Project2

[Content]
Der an einen Systemaufruf übergebene Datenbereich ist zu klein

[OK]
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.531 Beiträge
 
Delphi 12 Athens
 
#8

AW: OS Version ermitteln

  Alt 30. Nov 2010, 14:48
Noch mal zu dem C Code:
Code:
if Wert1 & Wert dann
Wie übersetzt man das in Delphi? Eventuell habe ich das falsch Übersetzt.
Alles was am Ende übrig bleibt, das bewertet C als Boolean.

False = 0
True <> 0

also if TheVar and TheConstOderSonstwas <> 0 then .


if (osvi.wSuiteMask and VER_SUITE_PERSONAL = VER_SUITE_PERSONAL) then
das ist ja fast genauso gut, wie if TheBool = true then , außerdem ist es länger und, wie ich finde, unübersichtlicher, als if osvi.wSuiteMask and VER_SUITE_PERSONAL <> 0 then Dieses Konstengenvergleiche ist nur wichtig, wenn es um Vergleiche mehrer Bits geht.

also z.B.
Delphi-Quellcode:
const Value0 = $00;
  Value1 = $01;
  Value2 = $02;
  Value3 = $03;
  ValueMask = $0F;
if TheVar and ValueMask = Value2 then
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: OS Version ermitteln

  Alt 30. Nov 2010, 17:08
Einspruch Euer Ehren,
Damit wollte ich zum Ausdruck bringen, das dieses Bit gesetzt sein muß (wobei man im ersten Moment natürlich nicht weiß, daß sich hinter VER_SUITE_PERSONAL nur ein Bit versteckt)
Und wenn man von der Länge des Konstantennamens absieht halte ich das für sauberer als das beliebige <>0, weil das Bitmuster das gleiche sein muß!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: OS Version ermitteln

  Alt 30. Nov 2010, 17:33
@Luckie

nimm das

GetNativeSystemInfo(si);

an den Anfang hoch sonst wird XP64 Bit als Server2003 deklariert.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:25 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