Announcement

Collapse
No announcement yet.

Betriebssystem - aber welches?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Betriebssystem - aber welches?

    Hallo,

    erstmal herzlichen Dank für das Interesse an meinem Artikel. Ich suche dringend eine Funktion, die mir den Namen des aktuellen Betriebssystems ausgibt. Leider haben über 20 Komponenten Ihren Dienst versagt - die eine entdeckte ein Windows98-Update als Windows95, die andere wollte mir kein Windows NT erkennen usw.

    Also habe ich eine Funktion geschrieben, die soweit in C++ auch einwandfrei funktioniert. In Delphi jedoch leider nicht! Hier ist sie:

    function WinSystem: String;
    var
    versionInfo: OSVERSIONINFO;
    WinVersion: String;
    begin
    versionInfo.dwOSVersionInfoSize := SizeOf(OSVERSIONINFO);

    if versionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
    begin
    if versionInfo.dwMajorVersion = 4 then
    WinVersion := 'Windows NT';
    if versionInfo.dwMajorVersion = 5 then
    WinVersion := 'Windows 2000';
    end;
    if versionInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS then
    begin
    if (versionInfo.dwMajorVersion = 4) and (versionInfo.dwMinorVersion = 20) then
    WinVersion := 'Windows Millenium';
    if (versionInfo.dwMajorVersion = 4) and (versionInfo.dwMinorVersion = 10) then
    WinVersion := 'Windows 98';
    if (versionInfo.dwMajorVersion = 4) and (versionInfo.dwMinorVersion = 0) then
    WinVersion := 'Windows 95';
    end;

    result := WinVersion;
    end;

    Wäre jedem äußerst dankbar, der mir weiterhelfen kann!

    Machts gut und viele Grüße!

    Andy Ströbel, ASCOMP Software

  • #2
    Du füllst ja nirgends die Variabler VersionInfo.... Das einzige was du setzt ist das Feld dwOSVersionInfoSize. So kann es doch auch nicht C klappen, oder?<p>
    Hier nochmal der Quellcode leichter lesbar:
    <pre>
    <code><pre>
    <font face="Courier New"><font color="#000080"><b>function</b></font> WinSystem<font color="#FF0000">:</font> <font color="#000080"><b>String</b></font><font color="#FF0000">;</font>
    <font color="#000080"><b>var</b></font>
    versionInfo<font color="#FF0000">:</font> OSVERSIONINFO<font color="#FF0000">;</font>
    WinVersion<font color="#FF0000">:</font> <font color="#000080"><b>String</b></font><font color="#FF0000">;</font>
    <font color="#000080"><b>begin</b></font>
    versionInfo<font color="#FF0000">.</font>dwOSVersionInfoSize <font color="#FF0000">:=</font> SizeOf<font color="#FF0000">(</font>OSVERSIONINFO<font color="#FF0000">)</font><font color="#FF0000">;</font>
    <font color="#000080"><b>if</b></font> versionInfo<font color="#FF0000">.</font>dwPlatformId <font color="#FF0000">=</font> VER_PLATFORM_WIN32_NT <font color="#000080"><b>then</b></font> <font color="#000080"><b>begin</b></font>
    <font color="#000080"><b>if</b></font> versionInfo<font color="#FF0000">.</font>dwMajorVersion <font color="#FF0000">=</font> <b>4</b> <font color="#000080"><b>then</b></font>
    WinVersion <font color="#FF0000">:=</font> <b>'Windows NT'</b><font color="#FF0000">;</font>
    <font color="#000080"><b>if</b></font> versionInfo<font color="#FF0000">.</font>dwMajorVersion <font color="#FF0000">=</font> <b>5</b> <font color="#000080"><b>then</b></font>
    WinVersion <font color="#FF0000">:=</font> <b>'Windows 2000'</b><font color="#FF0000">;</font>
    <font color="#000080"><b>end</b></font><font color="#FF0000">;</font>
    <font color="#000080"><b>if</b></font> versionInfo<font color="#FF0000">.</font>dwPlatformId <font color="#FF0000">=</font> VER_PLATFORM_WIN32_WINDOWS <font color="#000080"><b>then</b></font> <font color="#000080"><b>begin</b></font>
    <font color="#000080"><b>if</b></font> <font color="#FF0000">(</font>versionInfo<font color="#FF0000">.</font>dwMajorVersion <font color="#FF0000">=</font> <b>4</b><font color="#FF0000">)</font> <font color="#000080"><b>and</b></font> <font color="#FF0000">(</font>versionInfo<font color="#FF0000">.</font>dwMinorVersion <font color="#FF0000">=</font> <b>20</b><font color="#FF0000">)</font> <font color="#000080"><b>then</b></font>
    WinVersion <font color="#FF0000">:=</font> <b>'Windows Millenium'</b><font color="#FF0000">;</font>
    <font color="#000080"><b>if</b></font> <font color="#FF0000">(</font>versionInfo<font color="#FF0000">.</font>dwMajorVersion <font color="#FF0000">=</font> <b>4</b><font color="#FF0000">)</font> <font color="#000080"><b>and</b></font> <font color="#FF0000">(</font>versionInfo<font color="#FF0000">.</font>dwMinorVersion <font color="#FF0000">=</font> <b>10</b><font color="#FF0000">)</font> <font color="#000080"><b>then</b></font>
    WinVersion <font color="#FF0000">:=</font> <b>'Windows 98'</b><font color="#FF0000">;</font>
    <font color="#000080"><b>if</b></font> <font color="#FF0000">(</font>versionInfo<font color="#FF0000">.</font>dwMajorVersion <font color="#FF0000">=</font> <b>4</b><font color="#FF0000">)</font> <font color="#000080"><b>and</b></font> <font color="#FF0000">(</font>versionInfo<font color="#FF0000">.</font>dwMinorVersion <font color="#FF0000">=</font> <b>0</b><font color="#FF0000">)</font> <font color="#000080"><b>then</b></font>
    WinVersion <font color="#FF0000">:=</font> <b>'Windows 95'</b><font color="#FF0000">;</font>
    <font color="#000080"><b>end</b></font><font color="#FF0000">;</font>
    result <font color="#FF0000">:=</font> WinVersion<font color="#FF0000">;</font>
    <font color="#000080"><b>end</b></font><font color="#FF0000">;</font></font>
    </pre></code>
    <p>
    Gruß,
    Bernhar

    Comment


    • #3
      Genauer fehlt noch der Aufruf der GetVersionEx-Routine... Schau mal unter http://www.swissdelphicenter.ch/de/newshowcoded.php

      Comment

      Working...
      X