Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi OS auslesen (https://www.delphipraxis.net/160014-os-auslesen.html)

michael.funcke 22. Apr 2011 21:49

OS auslesen
 
Hi,

würde gerne für mein Programm das OS (nur Windows) des Benutzers auslesen. Dabei wären Win95, Win98, Win2000, WinXP, WinVista und Win7 von Bedeutung. Die ganzen NT-Systeme brauche ich nicht unbedingt.

Hab
http://www.delphipraxis.net/145865-b...-auslesen.html
http://www.delphipraxis.net/75631-wi...und-vista.html
http://msdn.microsoft.com/en-us/library/ms724834
schon durchgelesen, aber das ergibt für mich alles keinen Sinn. :(
Gibt es fertigen Code, den man nehmen kann, um das OS auszulesen und nachher in nem String stehen zu haben?

Danke schonmal für alle Antworten! :thumb:

rollstuhlfahrer 22. Apr 2011 23:24

AW: OS auslesen
 
Es gibt da schon dutzende Threads (bestimmt) dafür hier. Meine ultimative Lösung war immer "cmd /c ver" aufzurufen und das auszulesen, was am Ende rauskommt, denn das sollte aller Wahrscheinlichkeit nach stimmen. Du kannst aber auch dich selbst auf den Weg machen und mit Hilfe von MSDN-Library durchsuchenGetVersionEx() dir die Versionsnummer des Systems geben lassen. Dann kannst du anhand von den ersten beiden Stellen ermitteln, was du für ein System vor dir hast. Win XP hat die Nummer 5, Vista 6 und Win7 6.1. Alle anderen Systeme solltest du eh nicht mehr finden und wenn doch, dann nur noch in Ausnahmefällen.

Bernhard

Luckie 23. Apr 2011 01:04

AW: OS auslesen
 
Dir ist schon klar, dass ab Windiws2000 alles NT Systeme sind? Und fertigen Code hast du doch schon gefunden. Was willst du denn noch?

Dezipaitor 23. Apr 2011 02:27

AW: OS auslesen
 
Ja, sowas gibt es. In der Delphi-Praxis findest du es unter "Windows version ermitteln" in der Suchfunktion. Probier es mal aus, gibt ne Menge guter Sachen darin. Über google wirst du das so nicht schnell finden.

Satty67 23. Apr 2011 06:44

AW: OS auslesen
 
Zitat:

Zitat von rollstuhlfahrer (Beitrag 1096575)
mit Hilfe von MSDN-Library durchsuchenGetVersionEx

Erst vor kurzem durchs Forum drauf gestossen:

SysUtils bietet schon Minor/Major/Build/CSD/Platform an. Einfach mal SysUtils.Win32 eingeben und schauen was angeboten wird.

RWarnecke 23. Apr 2011 07:32

AW: OS auslesen
 
Oder noch einfacher das Betriebssystem aus der Registry auslesen. Es steht seit Windows 2000 immer an der gleichen Stelle.

michael.funcke 23. Apr 2011 16:20

AW: OS auslesen
 
Zitat:

Dir ist schon klar, dass ab Windiws2000 alles NT Systeme sind?
Nein, das war mir nicht klar. Danke.

Hab jetzt meine Lösung gefunden:
Code:
function TForm1.GetOperatingSystem(): String;
var
  osVerInfo: TOSVersionInfo;
  majorVer, minorVer: Integer;
begin
  osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
  if GetVersionEx(osVerInfo) then
  begin
    majorVer := osVerInfo.dwMajorVersion;
    minorVer := osVerInfo.dwMinorVersion;
    case osVerInfo.dwPlatformId of
      // Windows NT/2000
      VER_PLATFORM_WIN32_NT:
        begin
          if majorVer <= 4 then
            Result := 'WinNT'
          else if (majorVer = 5) and (minorVer = 0) then
            Result := 'Win2000'
          else if (majorVer = 5) and (minorVer = 1) then
            Result := 'WinXP'
          else if (majorVer = 6) and (minorVer = 0) then
            Result := 'WinVista'
          else if (majorVer = 6) and (minorVer = 1) then
            Result := 'Win7'
          else
            Result := 'Unknown';
        end;
      // Windows 9x/ME
      VER_PLATFORM_WIN32_WINDOWS:
        begin
          if (majorVer = 4) and (minorVer = 0) then
            Result := 'Win95'
          else if (majorVer = 4) and (minorVer = 10) then
          begin
            if osVerInfo.szCSDVersion[1] = 'A' then
              Result := 'Win98SE'
            else
              Result := 'Win98';
          end
          else if (majorVer = 4) and (minorVer = 90) then
            Result := 'WinME'
          else
            Result := 'Unknown';
        end;
      else
        Result := 'Unknown';
    end;
  end
  else
    Result := 'Unknown';
end;
Danke euch! :thumb:

sx2008 24. Apr 2011 14:23

AW: OS auslesen
 
Zitat:

Zitat von michael.funcke (Beitrag 1096635)
Hab jetzt meine Lösung gefunden:
Delphi-Quellcode:
function TForm1.GetOperatingSystem(): String;

Greift die Methode GetOperatingSystem() irgendwie auf das Formular zu?
Das war jetzt eine rethorische Frage; nein, GetOperatingSystem() greift nicht auf das
Formular zu und es hat absolut nichts mit dem Formular zu tun.

Also sollte man aus der Methode eine ganz normale Funktion machen:
Delphi-Quellcode:
function GetOperatingSystem(): String;

Luckie 24. Apr 2011 15:28

AW: OS auslesen
 
Und statt String AnsiString verwenden, dann gibt es weniger Ärger später mit Delphi2009.

Bernhard Geyer 24. Apr 2011 15:33

AW: OS auslesen
 
Zitat:

Zitat von Luckie (Beitrag 1096733)
Und statt String AnsiString verwenden, dann gibt es weniger Ärger später mit Delphi2009.

Eher mehr Arger denn TOSVersionInfo liegt auch in einer A und W-Version vor, so das man hier wenn man schon AnsiString verwendet auch gleich fest an TOSVersionInfoA binden muss und nicht zuverlässig beim D2009-Umstieg eine Compilerwarnung zu haben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:08 Uhr.
Seite 1 von 2  1 2      

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