Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Feststellen, welches Betriebssystem läuft (D2010 /Win7) (https://www.delphipraxis.net/151431-feststellen-welches-betriebssystem-laeuft-d2010-win7.html)

Kurt56 17. Mai 2010 21:31


Feststellen, welches Betriebssystem läuft (D2010 /Win7)
 
Feststellen, welches Betriebssystem läuft funktionierte unter D7 mit:

Delphi-Quellcode:
function TInfoForm.GetWindowsVersion : string;
var myOsVersion : _OSVERSIONINFO;
begin
myOsVersion.dwOSVersionInfoSize := 148;
GetVersionExA(myOsVersion);                 //<Fehlermeldung unter D2010 unter Windows 7
case myOsVersion.dwPlatformId of
  1:begin
    if (myOsVersion.dwMajorVersion =4 ) and
       (myOsVersion.dwMinorVersion = 0) then
         Result := 'Windows 95';
    if (myOsVersion.dwMajorVersion =4 ) and
       (myOsVersion.dwMinorVersion = 10) then
         Result := 'Windows 98';
    end;
  2:begin
    if (myOsVersion.dwMajorVersion =3 ) then
         Result := 'Windows NT 3.51';
    if (myOsVersion.dwMajorVersion =4 ) then
         Result := 'Windows NT 4';
    if (myOsVersion.dwMajorVersion =5 ) and
       (myOsVersion.dwMinorVersion = 0) then
         Result := 'Windows 2000';
    if (myOsVersion.dwMajorVersion =5 ) and
       (myOsVersion.dwMinorVersion = 1) then
         Result := 'Windows XP';
    end;
  else
    Result := 'unbekannt';
  end;
end;
[DCC Fehler] Info1.pas(53): E2250 Es gibt keine überladene Version von 'GetVersionExA', die man mit diesen Argumenten aufrufen kann

Kann jemand sagen, wie die OS-Version unter D2010 abgerufen werden kann?

Matze 17. Mai 2010 21:42

Re: Feststellen, welches Betriebssystem läuft (D2010 /Win7)
 
Hallo Kurt,

vielleicht hilft dir das weiter: [Kompo] TWindowsVersionsInfo - Kompo zur Windowserkennung

generic 17. Mai 2010 21:54

Re: Feststellen, welches Betriebssystem läuft (D2010 /Win7)
 
GetVersionExA wenn du die W Variante nimmst, solltest du mehr erfolgt haben.

GetVersionExW

rawi 17. Mai 2010 22:06

Re: Feststellen, welches Betriebssystem läuft (D2010 /Win7)
 
Du solltest auch die Zeile

Zitat:

myOsVersion.dwOSVersionInfoSize := 148;
in
Delphi-Quellcode:
  myOsVersion.dwOSVersionInfoSize := SizeOf(myOsVersion);
ändern.

gruß rawi

Kurt56 18. Mai 2010 06:40

Re: Feststellen, welches Betriebssystem läuft (D2010 /Win7)
 
Herzlichen Dank.

Es funktioniert.

Nun habe ich noch eingebaut:

Delphi-Quellcode:
    if (myOsVersion.dwMajorVersion =6 ) and
       (myOsVersion.dwMinorVersion = 1) then
         Result := 'Windows 7';
und er zeigt mir auch meine Betriebssystemversion.
Danke sehr

Bernhard Geyer 18. Mai 2010 06:41

Re: Feststellen, welches Betriebssystem läuft (D2010 /Win7)
 
Und wieso wird nicht eine der zig fertigen Funktionen aus der JCL, ElPack, ... verwendet und schon wieder die tausendste eigene Implementierung gemacht?

himitsu 18. Mai 2010 07:04

Re: Feststellen, welches Betriebssystem läuft (D2010 /Win7)
 
Zitat:

Zitat von Bernhard Geyer
Und wieso wird nicht eine der zig fertigen Funktionen aus der JCL, ElPack, ... verwendet und schon wieder die tausendste eigene Implementierung gemacht?

PS: bei was fertigen bräuchtest du nur ab und zu ein Update einspielen und brauchst dann nicht selber ständig alle neuen Versionen aufzunehmen.

PS: Gibt es eigentlich eine Komponente, welche sich notfalls eine Liste aus dem Internet zieht?
(ich finde es immer witzig, wenn ein Programm neuere Windowse einfach nicht kennt oder gar was vollkommen falsches anzeigt ... mein Vista wurde von einem Programm auch schonmal für Win98 gehalten)

Kurt56 18. Mai 2010 10:19

Re: Feststellen, welches Betriebssystem läuft (D2010 /Win7)
 
Zitat:

Zitat von Bernhard Geyer
Und wieso wird nicht eine der zig fertigen Funktionen aus der JCL, ElPack, ... verwendet und schon wieder die tausendste eigene Implementierung gemacht?

Vielleicht, weil ICH die nich kenne :?:

Wo findet man denn diese Funktionen?

himitsu 18. Mai 2010 10:31

Re: Feststellen, welches Betriebssystem läuft (D2010 /Win7)
 
Eine wurde doch oben schon genannt?

PS: Nochmal zu deinem Code:
Zitat:

OSVERSIONINFO (dynamisch) + GetVersionExA (ANSI)
Sowas macht man auch nicht :warn:

GetVersionEx + OSVERSIONINFO
GetVersionExA + OSVERSIONINFOA
GetVersionExW + OSVERSIONINFOW

Du nimmst explizit die Ansi-Verison von GetVersionEx, aber willst diese mit der dynamisch Version des Records OSVERSIONINFO kombinieren, welche ab Delphi 2009 doch auf Unicode (OSVERSIONINFOW) weitergeleitet wird.

Zitat:

Es gibt keine überladene Version von 'GetVersionExA', die man mit diesen Argumenten aufrufen kann
Bei sowas schaut man nach, was diese Funktion für Argumente/Parameter haben will und dann wäre einem der Fehler auch selber aufgefallen. :zwinker:


Was willst du eigentlich genau erreichen, bzw. wozu benötigst du denn diese Information?

Kurt56 18. Mai 2010 12:57

Re: Feststellen, welches Betriebssystem läuft (D2010 /Win7)
 
Nun schimpfe nicht gleich, ich bin kein Superspezialist, sondern schreibe für uns die Zusatzprogramme
die mir helfen sollen, bei meinem Job.

Die Auftragsbearbeitung, Fakturierung, Lagerverwaltung,
das Bestellwesen, die Auswertungen aus Finanzbuchhaltung und Kostenrechnung
und die Bilanzierung.

Nun ist die Programmierung für mich doch spannender, als das Bilanzmodernisierungsgesetz (BilMoG),
aber ich bin kein Systemspezialist, weshalb mir dann solche Fehler nicht auffallen.

Ich benötige die Abfrage, weil die Erfassungsrechner Touchscreen unter Win7 laufen (sollen)
während die "alten" Rechner eben die normale Tastatur haben.
Also muß ich mich durch die TouchScreen-Sache beißen.

Also werde nicht böse, ich lerne noch.

PS: Die o.g. Programme habe ich schon vor Jahren (unter Delphi 7) erstellt und die laufen auch.
Aber es kommen eben auch immer neue Wünsche und Verbesserungen.
Außerdem lernt man ja auch dazu, so daß ich im Laufe der Zeit das eine oder andere geändert und erweitert habe.
Ich habe das alles einmal selber geschrieben, es funktioniert sogar. :roll:


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