![]() |
Re: [Kompo] TWIndowsVersionsInfo - Kompo zur Windowserkennun
Das sieht man doch bereits am Aufruf des Constructors.
Delphi-Quellcode:
Aus dem Kopf getippt, müsste aber stimmen.
var wvi: TWindowsVersionInfo;
begin wvi := TWindowsVersionInfo.Create(self); try Edit_ComplString.Text := wvi.WindowsVersionsString; Edit1.Text := wvi.ServicePack; Edit2.Text := IntToStr( wvi.MajorVersion ); Edit3.Text := IntToStr( wvi.MinorVersion ); Edit4.Text := IntToStr( wvi.BuildNumber ); finally wvi.Free; end; end; |
Re: [Kompo] TWIndowsVersionsInfo - Kompo zur Windowserkennun
Zitat:
Delphi-Quellcode:
Gruss
if (lstrcmpi(osvi.szCSDVersion,'Service Pack 2') = 0) then
(lstrcmpi(osvi.szCSDVersion,'Service Pack 6') = 0) then Inkompatible Typen: Array und PWideChar. EL |
Re: [Kompo] TWIndowsVersionsInfo - Kompo zur Windowserkennun
Richtig, aber das ist auch nicht die Frage gewesen, auf die ich geantwortet habe. Das "Char"-Problem bezieht sich wieder einmal auf ANSI <--> Unicode.
|
Re: [Kompo] TWIndowsVersionsInfo - Kompo zur Windowserkennun
@DeddyH,
vielen Dank, genau das habe ich gesucht. Zitat:
|
Re: [Kompo] TWIndowsVersionsInfo - Kompo zur Windowserkennun
Zitat:
|
Re: [Kompo] TWindowsVersionsInfo - Kompo zur Windowserkennun
Update auf Version 1.5
Den Download gibt es im ersten Beitrag: ![]() Die Komponente lässt sich nun unter Delphi 2009 kompilieren, zudem sind 2 neue Properties hinzugekommen (Codename und IsBeta (ist nützlich wenn man nicht weiß ob die Version des Vista Sp2 noch ne Beta ist oder nicht, denn wenn die SP Beta abläuft bekommt man nach 2 Stunden Nutzung einen BSOD)) und die Komponente erkennt Windows 7. Viel Spaß, ich hätte nicht gedacht dass die so viele Leute nutzen und ne Delphi 2009 Version wollen :thumb: |
Re: [Kompo] TWindowsVersionsInfo - Kompo zur Windowserkennun
Ich hoffe ich zweckentfremde den Thread nicht, aber ich habe mir die Komponente um eine Funktion erweitert damit ich für eine einfache Abfrage der Betriebssystemversion in meinen Programmen nicht extra eine Klasse erzeugen bzw. wieder freigeben muss. Vielleicht kann es ja noch jemand gebrauchen.
Hier die entsprechenden Erweiterungen in der WindowsVersionInfo.pas:
Delphi-Quellcode:
Beispielaufruf:
interface
. . . type // Vergleichsmodus auswählen // Wird nur für die Funktion "CheckWinVer" benötigt TCompareMode = ( Like, // gleich GreaterThan, // größer als GreaterLike, // größer gleich LessThan, // kleiner LessLike, // kleiner gleich OutSide // außerhalb ); . . . // Einfache Abfrage der Windowsversion ohne extern die Klasse verwenden zu müssen function CheckWinVer(CompareMode : TCompareMode; CompareWinVer : TWindowsVersions) : Boolean; implementation . . . // Einfache Abfrage der Windowsversion ohne extern die Klasse verwenden zu müssen function CheckWinVer(CompareMode : TCompareMode; CompareWinVer : TWindowsVersions) : Boolean; var wvi : TWindowsVersionInfo; begin Result := False; {$IFDEF USE_VCL} wvi := TWindowsVersionInfo.Create(nil); {$ELSE} wvi := TWindowsVersionInfo.Create; {$ENDIF} case CompareMode of Like : if wvi.WindowsVersion = CompareWinVer then Result := True; GreaterThan : if wvi.WindowsVersion > CompareWinVer then Result := True; GreaterLike : if wvi.WindowsVersion >= CompareWinVer then Result := True; LessThan : if wvi.WindowsVersion < CompareWinVer then Result := True; LessLike : if wvi.WindowsVersion <= CompareWinVer then Result := True; OutSide : if wvi.WindowsVersion <> CompareWinVer then Result := True; end; FreeAndNil(wvi); end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin if CheckWinVer(Like, wvWinXP) then ShowMessage('WinXP') else ShowMessage('Kein WinXP'); end; |
Re: [Kompo] TWindowsVersionsInfo - Kompo zur Windowserkennun
Kleiner Verbesserungsvorschlag:
Delphi-Quellcode:
function CheckWinVer(CompareMode : TCompareMode; CompareWinVer : TWindowsVersions) : Boolean;
var wvi : TWindowsVersionInfo; begin {$IFDEF USE_VCL} wvi := TWindowsVersionInfo.Create(nil); {$ELSE} wvi := TWindowsVersionInfo.Create; {$ENDIF} try case CompareMode of Like : Result := wvi.WindowsVersion = CompareWinVer; GreaterThan : Result := wvi.WindowsVersion > CompareWinVer; GreaterLike : Result := wvi.WindowsVersion >= CompareWinVer; LessThan : Result := wvi.WindowsVersion < CompareWinVer; LessLike : Result := wvi.WindowsVersion <= CompareWinVer; OutSide : Result := wvi.WindowsVersion <> CompareWinVer; else Result := False; end; finally FreeAndNil(wvi); end; end; |
Re: [Kompo] TWindowsVersionsInfo - Kompo zur Windowserkennun
Zitat:
danke für das Update auf Version 1.5. Leider wirft diese Version bei der Ausführung in der IDE immer eine Exception, da bei meinem Windows (XP SP3) weder der Regeintrag "CSDBuildNumber" existiert noch die Property "BuildLabEx" gefüllt ist. Damit hält die IDE beim Start meines Programmes immer an der Exceptionstelle an, was lästig ist. Wird dieses ganze BuildLabEx oder CSDBuild so dringend benötigt?
Delphi-Quellcode:
Danke und Gruß,
function GetRevisionFromBuildLabEx(): DWORD;
var sp : TStrSplitter; begin sp := TStrSplitter.Create; try try sp.Execute(BuildLabEx,'.'); // hier ist BuildLabEx = '' bei mir Result := StrToInt( sp[1] ); except on E: EConvertError do Result := MAXDWORD; end; finally FreeAndNil(sp); end; end; Begin Result := MAXDWORD; bRevFromBuildLabEx := false; sCSDBuildnumber := '0'; iCSDBuildnumber := 0; try sCSDBuildnumber := RegReadString (HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows NT\CurrentVersion\', 'CSDBuildNumber'); if sCSDBuildnumber <> '' then // hier ist sCSDBuildnumber = '' bei mir iCSDBuildnumber := StrToInt( sCSDBuildnumber ) else Begin [b] iCSDBuildnumber := GetRevisionFromBuildLabEx;[/b] bRevFromBuildLabEx := true; end except on E: EConvertError do end; Christoph |
Re: [Kompo] TWindowsVersionsInfo - Kompo zur Windowserkennun
schalte in der IDE die Option "Bei Delphi Exceptions stoppen" ab. Ja die Funktion brauche ich sonst kann man nicht zwischen den SP Versionen bei Vista unterscheiden. Den Eintrag gibts bei XP nur bei Betas, frag mich nicht warum die MS mal einbaut und mal nicht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 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