AGB  ·  Datenschutz  ·  Impressum  







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

OS Version ermitteln

Ein Thema von Luckie · begonnen am 30. Nov 2010 · letzter Beitrag vom 31. Dez 2010
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Benutzerbild von Luckie
Luckie

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

AW: OS Version ermitteln

  Alt 30. Nov 2010, 15:38
Habe ich die dpr im Archiv vergessen? Nö, die liegt doch bei.

Gut, dann bleibt noch der Fehler warum der Server 2008 als Vista erkannt wird.
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
 
#42

AW: OS Version ermitteln

  Alt 30. Nov 2010, 15:45
Vielleicht wg. Serviepack2

http://capitalhead.com/articles/how-...installed.aspx
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.184 Beiträge
 
Delphi 12 Athens
 
#43

AW: OS Version ermitteln

  Alt 30. Nov 2010, 15: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
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: OS Version ermitteln

  Alt 30. Nov 2010, 18: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
 
#45

AW: OS Version ermitteln

  Alt 30. Nov 2010, 18: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
Benutzerbild von Luckie
Luckie

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

AW: OS Version ermitteln

  Alt 30. Nov 2010, 19:28
OK, aber das habe ich eigentlich hier berücksichtigt:
Delphi-Quellcode:
if (osvi.dwMajorVersion = 6) then
    begin
      if (osvi.dwMinorVersion = 0) then
      begin
        if (osvi.wProductType = VER_NT_WORKSTATION) then
          Result := 'Windows Vista'
        else
          Result := 'Windows Server 2008';
      end;
Wie im Original auch.
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
 
#47

AW: OS Version ermitteln

  Alt 30. Nov 2010, 19:33
Du greifst vorher mehrfach auf

si.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64 zu.


EDIT

zumindest in der Letzten Version war si gar nicht mehr initialisiert bis zum GetNativeSystemInfo
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi (30. Nov 2010 um 19:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#48

AW: OS Version ermitteln

  Alt 30. Nov 2010, 19:37
Funktion aus dem DF:

Delphi-Quellcode:
function GetNativeSystemInfo(var SystemInfo: TSystemInfo): Boolean;
type
  TGetNativeSystemInfo = procedure (var SystemInfo: TSystemInfo) stdcall;
var
  LibraryHandle: HMODULE;
  _GetNativeSystemInfo: TGetNativeSystemInfo;
begin
  Result := False;
  LibraryHandle := GetModuleHandle(kernel32);

  if LibraryHandle <> 0 then
  begin
    _GetNativeSystemInfo := GetProcAddress(LibraryHandle,'GetNativeSystemInfo');
    if Assigned(_GetNativeSystemInfo) then
    begin
      _GetNativeSystemInfo(SystemInfo);
      Result := True;
    end
    else
      GetSystemInfo(SystemInfo);
  end
  else
    GetSystemInfo(SystemInfo);
end;

function IsWindows64: Boolean;
var
  ASystemInfo: TSystemInfo;
const
  PROCESSOR_ARCHITECTURE_INTEL = 0;
  PROCESSOR_ARCHITECTURE_IA64 = 6;
  PROCESSOR_ARCHITECTURE_AMD64 = 9;
begin
  GetNativeSystemInfo(ASystemInfo);
  Result := ASystemInfo.wProcessorArchitecture in [PROCESSOR_ARCHITECTURE_IA64,PROCESSOR_ARCHITECTURE_AMD64];
end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: OS Version ermitteln

  Alt 30. Nov 2010, 19:41
zumindest in der Letzten Version war si gar nicht mehr initialisiert bis zum GetNativeSystemInfo
Das ist jetzt behoben und steht am Anfang.

@toms: Das mit dem 32/64-Bit scheint jetzt gelöst zu sein. Ich habe nur noch das Vista/Srever 2008 Problem.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

AW: OS Version ermitteln

  Alt 30. Nov 2010, 23:11
So, hier ist die aktuelle Version.
Angehängte Dateien
Dateityp: zip OSDisplayString.zip (26,9 KB, 55x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


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 18:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz