Autor |
Beitrag |
Kurzer_18
      
Beiträge: 44
WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
|
Verfasst: So 19.08.07 13:36
Hallo.... hat von euch jemand eine ahnung.. bzw eine lösung gefunden wie ich Die aktuelle DirectX version ermitteln kann? d.h auch unter Windows Vista (DirectX 10).
Niergends findet man was dazu und da dacht ich mir poste ich es doch einfach mal hier rein  währe schon ganz guddi wenn da einer ne idee hat ober vielleicht weis wie des funktioniert.
DANKE!!!!
|
|
Calculon
      
Beiträge: 676
Win XP Professional
Delphi 7 PE, Delphi 3 PRO
|
Verfasst: So 19.08.07 14:25
Kurzer_18 hat folgendes geschrieben: | [..] Niergends findet man was dazu [..] |
Kann ich nicht bestätigen. Google fand sofort:
forum.dsdt.info/view...20&view=previous
Gruß
Calculon
--
|
|
Kurzer_18 
      
Beiträge: 44
WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
|
Verfasst: So 19.08.07 14:32
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| function GetDirectXVersion(var major, minor: word): boolean; var Reg: TRegistry; str: string; res: boolean; DXVersion: record Major: Longword; Minor: Longword; end;
begin str:=''; res:=false; major:=0; minor:=0; Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('\Software\Microsoft\DirectX', False) then begin res:=true; Reg.ReadBinaryData('InstalledVersion', DXVersion, SizeOf(DXVersion)); end; finally Reg.CloseKey; Reg.Free; end;
if res then begin Major:=HiByte(hiWord(DXVersion.Major)); Minor:=HiByte(hiword(DXVersion.Minor)); end;
Result := res; end; |
und wie führe ich dies nun aus? weil er meint immer was mit:
[Fehler] Unit1.pas(64): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
DAMIT ERMITTLE ich auch wieder nur DX9 unter Vista.. es geht ja aber darum das DX10 ausgegeben wird...
sie z.b. CPU-Z unter about.... da steht unten de windows version und die RICHTIGE DX version
|
|
Calculon
      
Beiträge: 676
Win XP Professional
Delphi 7 PE, Delphi 3 PRO
|
Verfasst: So 19.08.07 14:39
Zitat: | und wie führe ich dies nun aus? |
So:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Button1Click(Sender: TObject); var Major, Minor: Byte; begin GetDirectXVersion(Major, Minor); ShowMessage('Version: ' + IntToStr(major) + '.' + IntToStr(minor)); end; |
[edit]
Zitat: | DAMIT ERMITTLE ich auch wieder nur DX9 unter Vista.. |
Was ich etwas komisch finde, da die Werte ja aus der Registry gelesen werden. Wieso stehen da falsche oder nicht aktuelle Informationen drin? Wegen Abwärtskompatibilität?
[/edit]
Gruß
Calculon
--
|
|
Kurzer_18 
      
Beiträge: 44
WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
|
Verfasst: So 19.08.07 14:49
ok danke dir....
aber wie ich bereits erwähnte ermittelt er dabei auhc nur DX9 und nicht ds wirklich DX was bei vista dabei ist .. also KEIN DX 10
Zitat: | Was ich etwas komisch finde, da die Werte ja aus der Registry gelesen werden. Wieso stehen da falsche oder nicht aktuelle Informationen drin? Wegen Abwärtskompatibilität? |
das ist eine sehr gute frage die werte von DX 10 stehen leider nicht mehr darin weis auch ne warum die müsen irgendwie anders abgefragt werden...und ich habe jetzt inzwischen überall und niegends geschaut aber ich finde nix und wenn ich was finde dann ist es immer das selbe über die registry.. aber Vista (DirectX 10) steht nunmal nicht mehr in der Registry nur sie simpulierte bzw. Abwärtskompatibilität DX9.. aber keine 10 mehr.... aber das ist genau das was ich ja will.
D.h ich bin jeden über vorschläge dankbar.. solange sie sich nicht auf die registry (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectX) beziehen.... denn da steht DEFINITIV nicht drinne...!!!
Einloggen, um Attachments anzusehen!
|
|
TGLDX
      
Beiträge: 22
|
Verfasst: So 19.08.07 22:14
Man könnte ja prüfen, ob sich in Windows\System32\ die entsprechenden dlls befinden (d3d8/9/10.dll)
|
|
Kurzer_18 
      
Beiträge: 44
WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
|
Verfasst: Mo 20.08.07 20:18
@TGLDX
Könnte man aber danke DirectX installer installiert er auf Windows XP auch die DX10 files... und das windows XP kein DX10 hat weis und sollte inzwischen jeder wissen... also bringt das auhc nicht gerade Sehr viel...
es muss auch eine andere möglichkeit geben siehe CPU-Z... die haben es korrekt.. aber im falle von delphi scheint es ja nicht zu gehen.. 
|
|
TGLDX
      
Beiträge: 22
|
Verfasst: Mo 20.08.07 20:45
GetDXVerUnit.pas
dxdiag.pas
Das ist die Delphi-Version der Funktion GetDXVersion aus dem DirectX-SDK,welche die Version über dxdiag.exe ausliest.
|
|
Kurzer_18 
      
Beiträge: 44
WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
|
Verfasst: Mo 20.08.07 23:08
naja wie ich es mir gedacht habe gilt auch nur für DX 9... oder sagen wir mal bis Max DX9... :-8
|
|
TGLDX
      
Beiträge: 22
|
Verfasst: Mo 20.08.07 23:35
Du hast es scheinbar nicht ausprobiert; man übergibt der Funktion einen String-Parameter, welcher die Version danach im Klartext enthält.
(Ich habe mit Vista als Ergebnis "10.0" erhalten)
|
|
Kurzer_18 
      
Beiträge: 44
WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
|
Verfasst: Mo 20.08.07 23:54
hmm dann schreieb einfach mal wie du das gemacht hast? damit ich es nachvollziehen kann vielleicht habe ich ja auch einfach nur was falsch gemacht.. kannst es ja gerne posten würde mich sehr freuen wenn es doch funktionieren sollte... also Unit kannst du ruhig posten.. danke dir
|
|
TGLDX
      
Beiträge: 22
|
Verfasst: Di 21.08.07 00:07
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure ShowDXVersion; var C: Cardinal; dxversion: String; begin GetDXVersion(C,dxversion); Application.MessageBox(PChar(dxversion),'DX-Version'); end; |
Units sind oben verlinkt (einfach in zwei *.pas Dateien kopieren).
|
|
Kurzer_18 
      
Beiträge: 44
WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
|
Verfasst: Di 21.08.07 00:25
Danke dir.... also teste ich es nochmal... und dann mal schauen.. aber ich glaube das habe ich eh vergessen ;-D aber danke dir trotzdem
|
|