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

Vager

Frischling

  • »Vager« ist der Autor dieses Themas

Beiträge: 36

Beruf: Schule

  • Private Nachricht senden

1

28.03.2005, 11:17

Fehlermeldung beim des "ersten Dreiecks"

Ich hab da ein mehr oder weniger großes Problem, dass ich nicht lösen kann. Ich habe zwei gemacht einen von der Fehlermeldung einen von dem Quelltext (Dort wo ich den Fehler vermute). MSDEV 6 spuckt keine Fehlermeldung aus. (Ich hab es irgendwie geschafft die Fehler in der Tribase Engine und DirectX 9.0 SDK zu beseitigen weiß aber nicht wie.;-))
Nun ein Teil aus dem quellcode Quellcode:

if (FAILED(g_pD3D = Direct3DCreate9(D3D_SDK_VERSION)))
MessageBox(NULL,"Adapter konnte nicht\nerstellt werden!\nHaben sie DirectX9 installiert?","Adapterfehler",MB_OK);
ZeroMemory(&PresentParams, sizeof(D3DPRESENT_PARAMETERS));
PresentParams.BackBufferWidth = 1024;
PresentParams.BackBufferHeight = 768;
PresentParams.BackBufferFormat = D3DFMT_X8R8G8B8;
PresentParams.BackBufferCount = 1;
PresentParams.MultiSampleType = D3DMULTISAMPLE_NONE;
PresentParams.MultiSampleQuality = 0;
PresentParams.SwapEffect = D3DSWAPEFFECT_DISCARD;
PresentParams.hDeviceWindow = g_hwindow;
PresentParams.Windowed = FALSE;
PresentParams.EnableAutoDepthStencil = TRUE;
PresentParams.AutoDepthStencilFormat = D3DFMT_D24S8;
PresentParams.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER | D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL;
PresentParams.FullScreen_RefreshRateInHz= D3DPRESENT_RATE_DEFAULT;
PresentParams.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;

if (!(g_pD3D -> CreateDevice(D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
g_hwindow, D3DCREATE_MULTITHREADED|D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&PresentParams,
&g_pD3DDevice)))
{
MessageBox(NULL,"CreateDevice","Fehler",MB_OK);
g_pD3D -> Release();
return 1;
}
g_pD3DDevice -> SetFVF( D3DFVF_XYZ | D3DFVF_DIFFUSE );
g_pD3DDevice -> SetRenderState(D3DRS_LIGHTING , FALSE );
g_pD3DDevice -> SetRenderState(D3DRS_CULLMODE , D3DCULL_NONE );
g_pD3DDevice -> SetRenderState(D3DRS_DITHERENABLE , TRUE );


Nun die Fehlermeldung, die das Programm ausspuckt wenn ich es laufen lassen:


neu.exe - Fehler in Anwendung
Die Anweisung in"0x00401386" verweist auf Speicher in "0x00000000". Der Vorgang "read" konnte nicht auf dem Speicher durchgeführt werden.
OK Abbrechen
Ich hoffe, dass mir irgendjemand helfen kann denn ich hab schon alles, was mir einfiel versucht. ??? :crying:

Vager

Frischling

  • »Vager« ist der Autor dieses Themas

Beiträge: 36

Beruf: Schule

  • Private Nachricht senden

2

28.03.2005, 11:23

Ich hab da ein paar Fehler gemacht. Das dürft ihr mir aber nicht übel nehmen, da ich in ziehmlichem Zeitdruck bin.

weigo

Treue Seele

Beiträge: 234

Wohnort: Deutschland

  • Private Nachricht senden

3

28.03.2005, 12:32

So wie ich das Einschätze hast du irgendwo einen Null Pointer.
Du solltest einfach den Code debuggen und sehen ob alle Zeiger einen gültigen Wert haben.

Zum Debuggen mußt du einfach einen Haltepunkt setzen, z.B. am Anfang des Codes, den du gepostet hast. Dazu klickst du einfach mit der Maus auf den linken Rand bei VS, dann erscheint so ein roter Kreis. Beim Starten hält der Compiler bei dem roten Punkt an. Nun kannst du mit F11 und F10 Schrittweise durch den Code gehen und am unteren Teil des Bildschirms werden dir die Variablen angezeigt. Wenn ein Zeiger, z.B. g_pD3D nach der Anweisung if (FAILED(g_pD3D = Direct3DCreate9(D3D_SDK_VERSION))) den Wert 0x00000000 hat, dann ist es ein Null Pointer. Du scheinst zwar alle Fehler abzufangen, aber vielleicht steckt der Fehler auch nicht in diesem Code, sondern wo anders in deiner Anwendung.
Falls du wußtest wie man debuggt, dann solltest du das schleunigst machen.
Ansonsten solltest du es dir angwöhnen.
Hier gilt auch die schöne 80/20 Regel:
20% wird programmiert und 80% wird debuggt.
Damit kannst du schnell deine Fehler selbst finden.

Vager

Frischling

  • »Vager« ist der Autor dieses Themas

Beiträge: 36

Beruf: Schule

  • Private Nachricht senden

4

28.03.2005, 13:03

ja ja ich versuche es mal.
Komisch, dass ich das noch nicht früher gemacht hab :huhu:

Vager

Frischling

  • »Vager« ist der Autor dieses Themas

Beiträge: 36

Beruf: Schule

  • Private Nachricht senden

5

29.03.2005, 09:27

Es funktioniert ich kann es kaum glauben! Es funktioniert.
Danke! :roll:

weigo

Treue Seele

Beiträge: 234

Wohnort: Deutschland

  • Private Nachricht senden

6

29.03.2005, 09:37

Kein Problen, damit hast du auch eines der wichtigsten Werkzeuge bei der Programmierung kennengelernt, den guten alten Debugger.

Werbeanzeige