Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: Zählt Windows Home Server zu den Server Editions?

  Alt 10. Okt 2011, 07:22
Zitat von Hobby-Programmierer:
Vielleicht zeigst du mal den Code damit wir uns selber schnell was basteln können zum testen.
Das stammt aus DelphiWorks, einer OpenSource-Lib die ich vor Jahren mal öffentlich gepflegt (delphiworks.sourceforge.net) und dann irgendwann aus Zeitmangel eingestellt habe. Bezogen auf den Mehraufwand das Ding zu veröffentlichen statt nur im Hausgebrauch zu verwenden. Die aktuelle Version 1.5 ist im Anhang. Die betreffende Funktion ist dwGetOS() in der dwWinSystem.pas sowie dwGetOSName() in der selben Unit.
Zitat von Hobby-Programmierer:
Auf meinem Acer Server spielt deine Version 5 verrückt. Irgendwie schlägt der Zufallsgenerator zu. Startet man dein Programm öfter nacheinander (jeweils nur eine Instanz aktiv) kommen gelegentlich versch. Versionen raus. Bisher hatte ich:
Microsoft Windows Server 2003
Microsoft Windows Server 2003 Security Appliance
Microsoft Windows Server 2003 Enterprise Edition
Microsoft Windows Server 2003 Web Edition.
Betreffender Abschnitt ab Zeile 296:
Delphi-Quellcode:
                  if (OSV.wSuiteMask and VER_SUITE_DATACENTER) <> 0 then begin
                      result:= OS_WINDOWS_SERVER_2003_DATACENTER;
                  end else if (OSV.wSuiteMask and VER_SUITE_ENTERPRISE) <> 0 then begin
                      result:= OS_WINDOWS_SERVER_2003_ENTERPRISE;
                  end else if (OSV.wSuiteMask and VER_SUITE_SECURITY_APPLIANCE) <> 0 then begin
                      result:= OS_WINDOWS_SERVER_2003_SECAPPL;
                  end else if (OSV.wSuiteMask and VER_SUITE_BLADE) <> 0 then begin
                      result:= OS_WINDOWS_SERVER_2003_WEBEDITION;
                  end else if (OSV.wSuiteMask and VER_SUITE_WH_SERVER) <> 0 then begin
                      result:= OS_WINDOWS_HOME_SERVER_2003;
                  end else begin
                      result:= OS_WINDOWS_SERVER_2003;
                  end;
Würde dann bedeuten, dass OSV von GetVersionEx nicht richtig initialisiert wird, seltsam.
Zitat von Hobby-Programmierer:
Die Startzeit von ca. 2 Sekunden - selbst in der VM macht mich zumindest misstrauisch.
Mich aber auch... Bei mir startet das Ding ratzfatz, egal ob in der VM (VirtualPC) oder auf dem Hostsystem. Dass die Anwendung keinen "Mist" macht dürfte ja mit einem entsprechenden Traceprogramm jeder überprüfen können. Hier der gesamte Quelltext des Hostprogrammes:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  dwWinSystem, dwTypes;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Label1.Caption:= dwGetOSName;
end;

end.
EDIT: Ich denke, ich habe den Fehler gefunden. OSV wurde tatsächlich nicht richtig initialisiert. Ich konnte auch den beschriebenen Zufallseffekt reproduzieren und beheben. Im Anhang nun die korrigierte Version von DelphiWorks mit nochmals erweiterter Plattform-Erkennung und das Demo-Programm, ebenfalls ein wenig erweitert. Die Demo bringt nun eine Textliste der Rückgaben von GetVersionEx, GetSystemMetrics und GetSystemInfo. Das kann mir helfen, bei falsch erkannten Plattformen den Fehler zu finden bzw. neue Plattformen nachzutragen.
Angehängte Dateien
Dateityp: zip DelphiWorks_1.5.zip (485,9 KB, 9x aufgerufen)
Dateityp: zip Demo.zip (214,8 KB, 5x aufgerufen)

Geändert von Codehunter (10. Okt 2011 um 12:32 Uhr)
  Mit Zitat antworten Zitat