Autor Beitrag
Kurzer_18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
BeitragVerfasst: So 19.08.07 14:32 
ausblenden volle Höhe Delphi-Quelltext
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: So 19.08.07 14:39 
Zitat:
und wie führe ich dies nun aus?

So:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 22



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 22



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 22



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 22



BeitragVerfasst: Di 21.08.07 00:07 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
// uses GetDXVerUnit nicht vergessen!

procedure ShowDXVersion;
var C: Cardinal; // Nur wegen dem out-Parameter
    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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

WinXP Pro SP2, WinVista x32
Delphi 7 Enterprise
BeitragVerfasst: 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