AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte [Kompo] TWindowsVersionsInfo - Kompo zur Windowserkennung
Thema durchsuchen
Ansicht
Themen-Optionen

[Kompo] TWindowsVersionsInfo - Kompo zur Windowserkennung

Ein Thema von MagicAndre1981 · begonnen am 20. Aug 2007 · letzter Beitrag vom 18. Apr 2016
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
rNoob

Registriert seit: 18. Apr 2016
11 Beiträge
 
#1

AW: [Kompo] TWindowsVersionsInfo - Kompo zur Windowserkennung

  Alt 18. Apr 2016, 17:23
Ich habe diese Komponente für mich selber vor Kurzem angepasst. Es werden alle Windows 10-Versionen korrekt ausgelesen.
Try-Except's könnte man mal hier und da einbauen und ein paar weitere Überprüfungen. Aber für meinen Fall war das nicht notwendig.

MagicAndre1981 ist ja leider seit 2009 nicht mehr aktiv. Deswegen wurde in den Credits folgendes von mir hinzugefügt:
Zitat:
(* V1.6.0 (18.04.2016) [Diese Änderung wurde NICHT durch MagicAndre1981 vorgenommen - Fehler gelten ggf. also nicht ihm] *)
(* - Erkennung bis Windows 10 *)
(* V1.6.1 (19.04.2016) [Diese Änderung wurde NICHT durch MagicAndre1981 vorgenommen - Fehler gelten ggf. also nicht ihm] *)
(* - cruStrSplitter entfernt *)
(* - "except on E: EConvertError do"-Blöcke entfernt *)
cruStrSplitter wurde durch die Version von MaBuSE ersetzt: http://www.delphipraxis.net/923631-post54.html #54

Wen diese Version interessiert, sie ist im Anhang zu finden.
Angehängte Dateien
Dateityp: zip WindowsVersion_bis_Win10-1.zip (27,4 KB, 28x aufgerufen)

Geändert von rNoob (19. Apr 2016 um 09:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#2

Re: [Kompo] TWIndowsVersionsInfo - Kompo zur Windowserkennun

  Alt 4. Jan 2009, 16:10
Das sieht man doch bereits am Aufruf des Constructors.
Delphi-Quellcode:
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;
Aus dem Kopf getippt, müsste aber stimmen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#3

Re: [Kompo] TWIndowsVersionsInfo - Kompo zur Windowserkennun

  Alt 4. Jan 2009, 16:12
Zitat von DeddyH:
Das sieht man doch bereits am Aufruf des Constructors.
Delphi-Quellcode:
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;
Aus dem Kopf getippt, müsste aber stimmen.
das hilft aber nicht gegen das "Char-Problem":

Delphi-Quellcode:
if (lstrcmpi(osvi.szCSDVersion,'Service Pack 2') = 0) then
(lstrcmpi(osvi.szCSDVersion,'Service Pack 6') = 0) then

Inkompatible Typen: Array und PWideChar.
Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#4

Re: [Kompo] TWIndowsVersionsInfo - Kompo zur Windowserkennun

  Alt 4. Jan 2009, 16:15
Richtig, aber das ist auch nicht die Frage gewesen, auf die ich geantwortet habe. Das "Char"-Problem bezieht sich wieder einmal auf ANSI <--> Unicode.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.176 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: [Kompo] TWIndowsVersionsInfo - Kompo zur Windowserkennun

  Alt 4. Jan 2009, 16:19
@DeddyH,
vielen Dank, genau das habe ich gesucht.
Zitat von DeddyH:
Das sieht man doch bereits am Aufruf des Constructors.
Ich wüßte leider nicht wo man da nachschauen muss um das zu erkennen.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#6

Re: [Kompo] TWIndowsVersionsInfo - Kompo zur Windowserkennun

  Alt 4. Jan 2009, 16:26
Zitat:
wvi := TWindowsVersionInfo.Create(self);
Das bedeutet ja, dass wvi vom Typ TWindowsVersionInfo (oder zumindest eines Vorfahren davon) sein muss, sonst würde der Compiler das gar nicht zulassen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: [Kompo] TWindowsVersionsInfo - Kompo zur Windowserkennun

  Alt 4. Jan 2009, 22:40
Update auf Version 1.5

Den Download gibt es im ersten Beitrag:
http://www.delphipraxis.net/internal...=765213#765213

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
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
517 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: [Kompo] TWindowsVersionsInfo - Kompo zur Windowserkennun

  Alt 14. Jan 2009, 05:51
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:
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;
Beispielaufruf:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if CheckWinVer(Like, wvWinXP) then
    ShowMessage('WinXP')
  else
    ShowMessage('Kein WinXP');
end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#9

Re: [Kompo] TWindowsVersionsInfo - Kompo zur Windowserkennun

  Alt 14. Jan 2009, 10:59
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
pertzschc

Registriert seit: 29. Jul 2005
Ort: Leipzig
316 Beiträge
 
Delphi 12 Athens
 
#10

Re: [Kompo] TWindowsVersionsInfo - Kompo zur Windowserkennun

  Alt 25. Feb 2009, 18:07
Zitat von MagicAndre1981:
Update auf Version 1.5
Hallo Andre,

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:
    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;
Danke und Gruß,
Christoph
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 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