Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k / XP (https://www.delphipraxis.net/25651-schnell-u-einfach-rausfinden-ob-win9x-oder-win-nt-2k-xp.html)

flomei 9. Jul 2004 21:40


Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k / XP
 
Hallo!
Gibt es eine kleine Funktion die mir möglichst schnell und unkompliziert am besten nen Boolean-Wert liefert der mir sagt ob das OS des Benutzers Win 9x oder Win NT / 2k / XP ist.

Danke im Vorraus!

MfG Florian :hi:

alcaeus 9. Jul 2004 21:48

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
Sieh dir diesen Beitrag mal an, vielleicht hilft der dir weiter. Ich kann leider nicht testen, welches Ergebnis Win9X etc. bei dieser Variable bringen.
Alles mit MajorVersion über 4 ist auf alle Fälle NT, 2k oder XP

Greetz
alcaeus

flomei 9. Jul 2004 21:49

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
Jo danke, das hilft mir dann schon mal weiter...
DANKE!

MfG Florian :hi:

Pierre 9. Jul 2004 21:50

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
Hallo,
hier nachschauen und in die Suche "Windows" eingeben, dann findest Du einen TIP "Windowsversion":

swiss delphi center
Gruß Pierre

scp 9. Jul 2004 23:00

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
Nur die Versionsnummer zu nehmen ist evtl. unsicher, stattdessen sollte man dies hier nehmen:
Delphi-Quellcode:
function runonNT: boolean;
var
  lpVerInfo : TOSVersionInfo;
begin
  FillChar(lpVerInfo, SizeOf(lpVerInfo), 0);
  lpVerInfo.dwOSVersionInfoSize := SizeOf(lpVerInfo);
  GetVersionEx(lpVerInfo);
  result := (lpVerInfo.dwPlatformId = VER_PLATFORM_WIN32_NT);
end;
(Basiert auf einer Funktion von Assarbads ReUsables.pas)

MrKnogge 9. Jul 2004 23:08

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
Dann weis er aber nur ob das Windows ein auf NT basierendes Windows ist...

flomei 9. Jul 2004 23:10

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
Mehr müsste ich nicht wissen.
Nur ob das nen System der 9x-Schiene also (Win95, Win98 WinME) ist oder eins der NT-Schiene (WinNT, Win2k, WinXP)

MfG Florian :hi:

scp 9. Jul 2004 23:11

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
Zitat:

Zitat von MrKnogge
Dann weis er aber nur ob das Windows ein auf NT basierendes Windows ist...

Das hatte ich so aus der Fragestellung interpretiert (ein boolean wert kann nur wahr oder nicht wahr sein :) ).

MrKnogge 9. Jul 2004 23:15

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
ich dachte er will dann mehrere functionen haben
IsWin9X: boolean;
IsWinMe: boolean;
....

NicoDE 10. Jul 2004 00:36

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
Delphi-Quellcode:
if (GetVersion and DWORD($80000000)) = 0 then
begin
  // WinNT
end
else
begin
  // Win32s/Win9x
end;
ps: Typecast wegen Delphi2+3 (DWORD ist vorzeichenbehaftet).

flomei 10. Jul 2004 08:53

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
Das ist schön kurz... :) Werd ich mir nachher mal angucken, muss jetzt erstmal weg...

DANKE!

MfG Florian :hi:

scp 10. Jul 2004 09:10

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
Ist GetVersion nicht obsolete?
Zitat:

Zitat von PSDK
This function has been superseded by GetVersionEx, which is the preferred method for obtaining system version number information. New applications should use GetVersionEx.


Alexander 10. Jul 2004 09:17

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
Und noch eine Alternative: Win32Platform aus der SysUtils...

vlees91 10. Jul 2004 09:24

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
so gehts glaube ich auch(keine garantie):
Code:
uses SysUtils;

function GetWinVersion: string;
begin
  result:='Unbekannte Version';
  case Win32Platform of
    1: begin // 9x-Reihe
         if Win32MajorVersion=4 then begin
           if Win32MinorVersion=0 then result:='Windows 95'
           else if Win32MinorVersion=10 then result:='Windows 98'
           else if Win32MinorVersion=90 then result:='Windows Me';
         end;
       end;
    2: begin // NT-Reihe
         if (Win32MajorVersion=3) and (Win32MinorVersion=51) then result:='Windows NT 3.51'
         else if (Win32MajorVersion=4) and (Win32MinorVersion=0) then result:='Windows NT 4'
         else if Win32MajorVersion=5 then begin
           if Win32MinorVersion=0 then result:='Windows 2000'
           else if Win32MinorVersion=1 then result:='Windows XP'
           else if Win32MinorVersion=2 then result:='Windows .NET Server';
         end;
       end;
  end;
  //Win32CSDVersion enthält Informationen zu Servicepacks
  if Win32CSDVersion<>'' then result:=result+' '+Win32CSDVersion;
end;
edit:du kannst die fuktion noch nach boolean umändern und bei den ersten drei results false ausgeben, und bei den anderen true.

CalganX 10. Jul 2004 09:27

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
Hi,
dann hast du aber die Version als String. Meiner Meinung nach doof. Außerdem sind die bisherigen Lösungen wesentlich kürzer. ;) Und Florian kam es ja auf eine kurze Lösung an. *g*

Chris

Muetze1 10. Jul 2004 11:25

Re: Schnell u. einfach rausfinden ob Win9x oder Win NT / 2k
 
Moin!

Dann ganz kurz mit SysUtils, da die Delphi Progs das beim Start eh ermitteln:

Delphi-Quellcode:
Function IsNT : Boolean;
Begin
  Result := ( Win32Platform = 2 );
End;
MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 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