Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Iljaronaldo

Treue Seele

  • »Iljaronaldo« ist der Autor dieses Themas

Beiträge: 99

Wohnort: Hadamar

Beruf: Schüler[9.Klasse Realschule]

  • Private Nachricht senden

1

13.08.2009, 19:09

Problem(Listing 2.51)->Keine Infos über Adapter?!

Hey,

bin grad dabei infos über meine Graka rauszubekommen in diesem listing. Der Code an sich ist ja richtig(selbst ncohmal geschrieben um es sich leichter zu merken).Aber es kommt nur die ID der Grafikkarte und osnt keine weiteren Infos.Der aktuellste Treiber ist installiert und es ist eine ATI HD4650 1024MB.

So der Code mal:

C-/C++-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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <windows.h>
#include <d3d9.h>
#include <stdIO.h>


// Hauptprogramm

//

int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst,
                    LPSTR lpcmdline, int ncmdshow)
{

  //Anlegen einer neuen Schnittstelle

  PDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION);
  
  //Prüfen ob alles glatt ging

  if(!pD3D)
  {
    MessageBox(NULL, "Direct3D konnte nicht initialisert werden!\n" 
        "Installieren Sie bitte die neueste DirectX Verison!",
        "Fehler",  MB_OK | MB_ICONEXCLAMATION);
    return 1;
  }

  //Anzahl d. Adapter

  int iNumAdapters = pD3D->GetAdapterCount();
 
  //Speicher reservieren und infos über alle Adapter holen

  D3DADAPTER_IDENTIFIER9* pAdapters = new D3DADAPTER_IDENTIFIER9[iNumAdapters];

  for(int iAdapter = 0; iAdapter < iNumAdapters;iAdapter++)
  {
      //Fehler ist aufgetreten

      if(FAILED(pD3D->GetAdapterIdentifier(iAdapter, 0, &pAdapters[iAdapter])))
      {
            MessageBox(NULL,"Adapterinformationen konnten nciht abgefragt werden!\n",
                "Fehler", MB_OK | MB_ICONEXCLAMATION);
      

      //Aufräumen

      pD3D->Release();
      delete[] pAdapters;
      return 1;
      
      
      }

    //Adapterinformationen anzeigen


      char acAdapterInfo[1024];
      sprintf(acAdapterInfo,"Adapter-ID: %d\n",
                            "Name: %s\n",
                            "Treiber: %s\n",
                            "Treiberversion: %d",
                            iAdapter,
                            pAdapters[iAdapter].Description,
                            pAdapters[iAdapter].Driver,
                            pAdapters[iAdapter].DriverVersion);

                            MessageBox(NULL,acAdapterInfo,
                                        "Adapter gefunden",
                                        MB_OK | MB_ICONINFORMATION);
                            
                            
   }                        
    //Aufräumen

    pD3D->Release();
    delete[] pAdapters;

    return 0;

} // WinMain


Es wird nur eine ID angezeigt und mehr nciht.
Wie kann cih das beheben?
Das aktuellste DX SDK(März 2009) und Platform SDK habe ich.

Danke im Voraus.
tutti colpevole, nessuno colpevole. - Wenn einer Schuld ist, sind Alle Schuld.
Die Mafia ist wie ein Staat. Sie mordet nicht, Sie richtet hin.

Wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden. Das ist Relativität. (Albert Einstein)

Mein System

2

13.08.2009, 19:39

Glaube, das Problem liegt hier:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
sprintf(acAdapterInfo,"Adapter-ID: %d\n",
                            "Name: %s\n",
                            "Treiber: %s\n",
                            "Treiberversion: %d",
                            iAdapter,
                            pAdapters[iAdapter].Description,
                            pAdapters[iAdapter].Driver,
                            pAdapters[iAdapter].DriverVersion);


Probiers mal so:

C-/C++-Quelltext

1
2
3
4
5
sprintf(acAdapterInfo, "Adapter-ID: %d\nName: %s\nTreiber: %s\nTreiberversion: %d",
                            iAdapter,
                            pAdapters[iAdapter].Description,
                            pAdapters[iAdapter].Driver,
                            pAdapters[iAdapter].DriverVersion);
fka tm

Iljaronaldo

Treue Seele

  • »Iljaronaldo« ist der Autor dieses Themas

Beiträge: 99

Wohnort: Hadamar

Beruf: Schüler[9.Klasse Realschule]

  • Private Nachricht senden

3

13.08.2009, 20:04

Irgendiwe wird jetzt nix mehr angezeigt nur noch die infos zum Videomodi.

Hier der aktuelle Code:

C-/C++-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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <windows.h>
#include <d3d9.h>
#include <stdIO.h>


// Hauptprogramm

//

int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst,
                    LPSTR lpcmdline, int ncmdshow)
{

  //Anlegen einer neuen Schnittstelle

  PDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION);
  
  //Prüfen ob alles glatt ging

  if(!pD3D)
  {
    MessageBox(NULL, "Direct3D konnte nicht initialisert werden!\n" 
        "Installieren Sie bitte die neueste DirectX Verison!",
        "Fehler",  MB_OK | MB_ICONEXCLAMATION);
    return 1;
  }

  //Anzahl d. Adapter

  int iNumAdapters = pD3D->GetAdapterCount();
 
  //Speicher reservieren und infos über alle Adapter holen

  D3DADAPTER_IDENTIFIER9* pAdapters = new D3DADAPTER_IDENTIFIER9[iNumAdapters];

  for(int iAdapter = 0; iAdapter < iNumAdapters;iAdapter++)
  {
      //Fehler ist aufgetreten

      if(FAILED(pD3D->GetAdapterIdentifier(iAdapter, 0, &pAdapters[iAdapter])))
      {
            MessageBox(NULL,"Adapterinformationen konnten nciht abgefragt werden!\n",
                "Fehler", MB_OK | MB_ICONEXCLAMATION);
      

      //Aufräumen

      pD3D->Release();
      delete[] pAdapters;
      return 1;
      
      
      }

    //Adapterinformationen anzeigen


      char acAdapterInfo[1024];
      sprintf(acAdapterInfo, "Adapter-ID: %d\nName: %s\nTreiber: %s\nTreiberversion: %d",
                            iAdapter,
                            pAdapters[iAdapter].Description,
                            pAdapters[iAdapter].Driver,
                            pAdapters[iAdapter].DriverVersion); 



            //Weitere Infos

            int iNumModes = pD3D->GetAdapterModeCount(iAdapter, D3DFMT_R5G6B5);
            if(iNumModes > 0)
            {
                //Speciherplatz reservieren und String zurückgeben

                D3DDISPLAYMODE* pModes = new D3DDISPLAYMODE[iNumModes];
                char acModes[16384]= "";


                //Jeden Videomodus durchgehen

                for(int iMode = 0;iMode<iNumModes;iMode++)
                {
                    //informationen über Videomodus abfragen

                   pD3D->EnumAdapterModes(iAdapter, D3DFMT_R5G6B5, iMode, 
                                            &pModes[iMode]);
                    //breite, Höhe und Bildwiederholfrequenz in String schrieben

                   sprintf(acModes,"%s\nModus %d: %dx%d bei %d Hz (0: Standart)",
                           acModes,
                           iMode,
                           pModes[iMode].Width,
                           pModes[iMode].Height,
                           pModes[iMode].RefreshRate);
                    
                
                
                }
                //Videomid anziegen

            MessageBox(NULL, acModes, "Verfügbare 16-Bit Videomodi",
                       MB_OK | MB_ICONINFORMATION);

            //Speicher freigeben    

            delete[] pModes;
            
            
            
            }
                            
   }                        
    //Aufräumen

    pD3D->Release();
    delete[] pAdapters;

    return 0;

} // WinMain


Wie man sieht habe ich hier bischen ergänzt und es hat auch funtioniert.Als erstes kamm wieder nur die ID, dann drückt man auf OK und dann kommen die infos zum Videomodi.Dann habe ich probiert deine(TrikkieMikkies) Version v. sprintf einzusetzen.Kompiliert und es kommen nur ncoh die Infos zum Videomodi und nix zur Graka.
tutti colpevole, nessuno colpevole. - Wenn einer Schuld ist, sind Alle Schuld.
Die Mafia ist wie ein Staat. Sie mordet nicht, Sie richtet hin.

Wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden. Das ist Relativität. (Albert Einstein)

Mein System

4

13.08.2009, 20:13

Welch Wunder! ;)

Wenn du die Infos irgendwo ausgibst, hilft das sicher ungemein.
fka tm

Iljaronaldo

Treue Seele

  • »Iljaronaldo« ist der Autor dieses Themas

Beiträge: 99

Wohnort: Hadamar

Beruf: Schüler[9.Klasse Realschule]

  • Private Nachricht senden

5

13.08.2009, 20:18

Zitat von »"TrikkieMikkie"«

Welch Wunder! ;)

Wenn du die Infos irgendwo ausgibst, hilft das sicher ungemein.


Sry verstehe nciht was du mienst?! :lol:

Auch wenn ich das andere(also den neueren Code) komplett auskommentiere, dann passiert immer dasselbe.Kommt ncihts!
tutti colpevole, nessuno colpevole. - Wenn einer Schuld ist, sind Alle Schuld.
Die Mafia ist wie ein Staat. Sie mordet nicht, Sie richtet hin.

Wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden. Das ist Relativität. (Albert Einstein)

Mein System

6

13.08.2009, 20:25

Ich wollte dich nicht so direkt mit der Nase draufstoßen. ;)

Du sammelst zwar die Informationen in acAdapterInfo, gibst sie aber nirgends aus.

Nur acModes zeigst du via:

C-/C++-Quelltext

1
2
MessageBox(NULL, acModes, "Verfügbare 16-Bit Videomodi",
                       MB_OK | MB_ICONINFORMATION); 
fka tm

Iljaronaldo

Treue Seele

  • »Iljaronaldo« ist der Autor dieses Themas

Beiträge: 99

Wohnort: Hadamar

Beruf: Schüler[9.Klasse Realschule]

  • Private Nachricht senden

7

13.08.2009, 20:29

Zitat von »"TrikkieMikkie"«

Ich wollte dich nicht so direkt mit der Nase draufstoßen. ;)

Du sammelst zwar die Informationen in acAdapterInfo, gibst sie aber nirgends aus.

Nur acModes zeigst du via:

C-/C++-Quelltext

1
2
MessageBox(NULL, acModes, "Verfügbare 16-Bit Videomodi",
                       MB_OK | MB_ICONINFORMATION); 


:lol:

Peinlich.Drehe schon durch nach dem kapitel über matrizen und Vektoren :?

Danke.Funzt jetzt wie es sein soll.
tutti colpevole, nessuno colpevole. - Wenn einer Schuld ist, sind Alle Schuld.
Die Mafia ist wie ein Staat. Sie mordet nicht, Sie richtet hin.

Wenn man zwei Stunden lang mit einem Mädchen zusammensitzt, meint man, es wäre eine Minute. Sitzt man jedoch eine Minute auf einem heißen Ofen, meint man, es wären zwei Stunden. Das ist Relativität. (Albert Einstein)

Mein System

Werbeanzeige