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

KOR

Frischling

  • »KOR« ist der Autor dieses Themas
  • Private Nachricht senden

1

30.03.2006, 19:32

Erstes Beispielprogram

Hi ich benutze die Visual C++ 2005 Express Edition und beim ersten beispielprogramm bekomme ich nen kompilerfehler :crying: :
Es dreht sich nur um das Programm zum Auflisten der Adapter:

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
#include<Windows.h>
#include<StdIO.h>
#include<D3D9.h>

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   char* pcCmdLine,
                   int iShowCmd)
{
    PDIRECT3D9 pD3D =Direct3DCreate9(D3D_SDK_VERSION);
    if(!pD3D)
    {
        MessageBox(NULL,(LPCWSTR)"Fehler beim Erzeugen der Direct3D- Schnittstelle!",(LPCWSTR)"Fehler",MB_OK|MB_ICONEXCLAMATION);
        return 1;
    }
    //Anzahl der Adapter ermitteln

    int iNumAdapters=pD3D->GetAdapterCount();

    D3DADAPTER_IDENTIFIER9* pAdapters = new D3DADAPTER_IDENTIFIER9[iNumAdapters];

    for(int iAdapter=0;iAdapter<iNumAdapters;iAdapter++)
    {
        if(FAILED(pD3D->GetAdapterIdentifier(iAdapter,0,pAdapters[iAdapter])))
        {
            //Fehler!

            MessageBox(NULL,(LPCWSTR)"Adapterinformationen konnten nicht abgefragt werden!",(LPCWSTR)"Fehler",MB_OK|MB_ICONEXCLAMATION);
            pD3D->Release();
            delete[] pAdapters;
            return 1;
        }
        //Adapterinformationen anzeigen

        char acAdapterInfo[1024];
        sprintf(acAdapterInfo, "Adapter-ID: %d\n"
            "Name: %s\n"
            "Treiber: s\n"
            "Treberversion d",
            iAdapter,
            pAdapters[iAdapter].Description,
            pAdapters[iAdapter].Driver,
            pAdapters[iAdapter].DriverVersion);
        MessageBox(NULL,(LPCWSTR)acAdapterInfo, (LPCWSTR)"Adapter gefunden",MB_OK | MB_ICONINFORMATION);
    }
    pD3D->Release();
    delete[] pAdapters;
    return 0;
}

Der Compilerfehler:

error C2664: 'IDirect3D9::GetAdapterIdentifier' : cannot convert parameter 3 from 'D3DADAPTER_IDENTIFIER9' to 'D3DADAPTER_IDENTIFIER9 *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

Wenn mir jemand helfen könnte wäre ich sehr dankbar
Diplomatie ist die Kunst guter Hund zu sagen, während man gleichzeitig nach dem nächst größeren Stein ausschau hält.

2

30.03.2006, 19:39

Es heißt &pAdapters[iAdapter]

und stell eine Frage zu Davids Buch bitte das nächste mal in das Forum "3D - Spieleprogrammierung"
Ich gebe bei der Arbeit immer 100%

6% Montags
30% Dienstags
35% Mittwochs
25% Donnerstag
4% Freitag

Anonymous

unregistriert

3

30.03.2006, 19:40

C-/C++-Quelltext

1
if(FAILED(pD3D->GetAdapterIdentifier(iAdapter,0,&pAdapters[iAdapter])))

Die Lösung steht schon in Deiner Fehlermeldung. Referenzen rulen. Sind einfach Grundlagen des Pointerhandlings, solltest Du Dir noch mal durchlesen :) Denn Du wirst noch mehr auf Pointer stoßen in COM.

KOR

Frischling

  • »KOR« ist der Autor dieses Themas
  • Private Nachricht senden

4

30.03.2006, 19:49

Sry das ich das im falschen bereich gepostet habe. das ich vergessen habe den pointer als referenz anzugeben ist zwar ärgerlich aber bis zur if schleife komm ich ja nichtmal der bleibt in der Zeile:

C-/C++-Quelltext

1
D3DADAPTER_IDENTIFIER9* pAdapters = new D3DADAPTER_IDENTIFIER9[iNumAdapters];

hängen
Diplomatie ist die Kunst guter Hund zu sagen, während man gleichzeitig nach dem nächst größeren Stein ausschau hält.

Anonymous

unregistriert

5

30.03.2006, 19:51

KOR
Was ist Gottes Namen ist eine if-Schleife?!?!?! ???

dbGAMES

Treue Seele

Beiträge: 323

Wohnort: Frankfurt

Beruf: Student

  • Private Nachricht senden

6

30.03.2006, 19:55

ist nicht dein dein fehler, aber die ausgabe sollte stimmen:

C-/C++-Quelltext

1
2
3
4
//...

"Treiber: %s\n"
"Treberversion %d",
//...

KOR

Frischling

  • »KOR« ist der Autor dieses Themas
  • Private Nachricht senden

7

30.03.2006, 22:00

Eine if-Verzweigung wird von einigen auch(ich weiß das es falsch ist, hab es mir einfach so angewöhnt) als Schleife bezeichnet.

Zitat

ist nicht dein dein fehler, aber die ausgabe sollte stimmen:
Code (C++):
//...
"Treiber: %s\n"
"Treberversion %d",
//...

Darf ich fragen was ich daraus schließen soll natürlich ist das ganze mein fehler, ich hab es doch schließlich geschrieben.
Diplomatie ist die Kunst guter Hund zu sagen, während man gleichzeitig nach dem nächst größeren Stein ausschau hält.

Anonymous

unregistriert

8

30.03.2006, 22:02

KOR
Dann solltest Du es Dir aber ganz schnell Abgewöhnen! Bevor ich hier wieder anfange Romane zu schreiben zum Unterschied zwischen Schleifen und Scopes! :cussing:

Werbeanzeige