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

1

03.04.2007, 15:42

fehler beim starten der spiele

hi
bei mir tritt bei beiden spielen der gleiche fehler auf, wenn ich sie starten möchte.
zuerst kommt dieses fenster breakanoid.exe hat einen fehler festgestellt und muss beendet werden usw.
wenn man dann auf debug klickt kommt die meldung: Unbehandelte Ausnahme bei 0x100be609 (TriBaseD.dll) in Breakanoid.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.

ist in dieser funktion

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
tbResult tbFont::Exit()
{
    // Textur aus dem Effekt nehmen

    if(m_pEffect) m_pEffect->GetEffect()->SetTexture("Texture", NULL);     //diese zeile


    // Textur und Effekt freigeben

    TB_SAFE_RELEASE(m_pTexture);
    TB_SAFE_DELETE(m_pEffect);

    // Alles zurücksetzen

    ZeroMemory(this, sizeof(tbFont));

    return TB_OK;
}


was kann man da machen?

2

03.04.2007, 16:33

Ich vermute mal das die Pfade nicht stimmen. Schau mal ob du alle benötigten Unterverzeichnisse und Dateien hast.

Bsp: Startest du ein Spiel über die IDE ist der Ausführungsort der Hauptordner des Projekt. Startest du die Datei direkt über den Explorer liegt die Datei im Unterordner Debug bzw. Release oder bei neuerem VS in bin/Debug bzw. bin/Release. Kopier mal die exe in den Hauptordner und starte sie von dort. Solltest du auch von der IDE nicht starten können sind die Pfade generell falsch oder die Dateien und Ordner existieren nicht.

Ist aber nur eine Vermutung, da ich mit der Triebase Engine nie gearbeitet habe. Da ich aber davon ausgehen das David funktionierenden Code herausgibt, wird es wohl daran liegen, dass bei dir Dateien nicht gefunden werden :D

3

05.04.2007, 16:00

ich hab den ordner einfach komplett von der cd kopiert. da sollte also eigentlich alles stimmen...
die .dll für die tribase-engine natürlich auch ;)

4

11.04.2007, 19:05

weiß wirklich niemand eine lösung? weil es ist schon ein wenig blöd sich durchzulesen wie man ein spiel entwickelt, das nicht funktioniert ;)
mfg

5

07.05.2007, 15:38

das problem liegt darin, dass diese funktion aus tbFont.cpp

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
// Initialisierung aus virtuellen Dateien

tbResult tbFont::Init(tbVFile* pTGAFile,
                      tbVFile* pTBFFile)
{
    HRESULT hResult;

    // Die Klasseninstanz zurücksetzen.

    // Damit wird ermöglicht, dass der Init-Aufruf mehrere Male mit

    // derselben Instanz funktioniert.

    Exit();

    // Parameter prüfen und sicherstellen, dass tbDirect3D initialisiert wurde

    if(!pTGAFile)                       TB_ERROR_NULL_POINTER("pTGAFile", TB_ERROR);
    if(!pTBFFile)                       TB_ERROR_NULL_POINTER("pTBFFile", TB_ERROR);
    if(!tbDirect3D::IsInitialized())    TB_ERROR("Es muss zuerst eine tbDirect3D-Klasseninstanz erstellt werden!", TB_ERROR);


    // Textur laden

    if(FAILED(hResult = D3DXCreateTextureFromFileInMemoryEx(tbDirect3D::Instance().GetDevice(),
                                                            (BYTE*)(pTGAFile->GetBuffer()) + pTGAFile->GetCursor(),
                                                            pTGAFile->GetSize() - pTGAFile->GetCursor(),
                                                            D3DX_DEFAULT, D3DX_DEFAULT, 1, 0,
                                                            D3DFMT_UNKNOWN, D3DPOOL_MANAGED,
                                                            D3DX_DEFAULT, D3DX_DEFAULT,
                                                            0, NULL, NULL, &m_pTexture)))
    {
        // Fehler!

        TB_ERROR_DIRECTX("D3DXCreateTextureFromFileInMemoryEx", hResult, TB_ERROR);
    }

    // Informationen laden

    if(pTBFFile->Read(sizeof(tbFontInfo), &m_FontInfo))
    {
        // Fehler!

        TB_ERROR("Fehler beim Lesen der Schriftinformationen!", TB_ERROR);
    }

    // Effekt aus String erstellen

    m_pEffect = new tbEffect;
    if(!m_pEffect) TB_ERROR_OUT_OF_MEMORY(TB_ERROR);
    if(m_pEffect->Init("TEXTURE Texture;\n"
                       "\n"
                       "TECHNIQUE T1\n"
                       "{\n"
                       "    PASS P1\n"
                       "    {\n"
                       "        Texture[0]          = <Texture>;\n"
                       "        ZEnable             = False;\n"
                       "        ZWriteEnable        = False;\n"
                       "        ColorOp[0]          = Modulate;\n"
                       "        ColorArg1[0]        = Texture;\n"
                       "        ColorArg2[0]        = Current;\n"
                       "        ColorOp[1]          = Disable;\n"
                       "        AlphaOp[0]          = Modulate;\n"
                       "        AlphaArg1[0]        = Texture;\n"
                       "        AlphaArg2[0]        = Current;\n"
                       "        AlphaOp[1]          = Disable;\n"
                       "        AlphaBlendEnable    = True;\n"
                       "        SrcBlend            = SrcAlpha;\n"
                       "        DestBlend           = InvSrcAlpha;\n"
                       "    }\n"
                       "}\n", -1))
    {
        // Fehler!

        TB_ERROR("Fehler beim Erstellen des Effekts!", TB_ERROR);
    }

    // Textur setzen

    m_pEffect->GetEffect()->SetTexture("Texture", m_pTexture);

    return TB_OK;
}

versucht einen effekt zu erstellen.

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
// Erstellen aus einem String

tbResult tbEffect::Init(char* pcCode,
                        int iSize)
{
    HRESULT hResult;

    // Die Klasseninstanz zurücksetzen.

    // Damit wird ermöglicht, dass der Init-Aufruf mehrere Male mit

    // derselben Instanz funktioniert.

    Exit();

    // Parameter prüfen und sicherstellen, dass Direct3D initialisiert wurde

    if(!pcCode)                         TB_ERROR_NULL_POINTER("pcCode", TB_ERROR);
    if(iSize == 0 || iSize < -1)        TB_ERROR_INVALID_VALUE("iSize", TB_ERROR);
    if(!tbDirect3D::IsInitialized())    TB_ERROR("Direct3D wurde noch nicht initialisiert!", TB_ERROR);


    // Länge anpassen

    if(iSize == -1) iSize = strlen(pcCode);

    // Jetzt den Effekt erstellen

    if(FAILED(hResult = D3DXCreateEffect(tbDirect3D::Instance().GetDevice(),
                                         pcCode, iSize, NULL, NULL, 0,
                                         tb_g_pEffectPool, &m_pEffect, NULL)))
    {
        // Fehler!

        TB_ERROR_DIRECTX("D3DXCreateEffect", hResult, TB_ERROR);
    }

    // Effektbeschreibung abfragen

    m_pEffect->GetDesc(&m_Desc);

    // Die erste gültige Technik setzen

    SetTechnique(-1);

    return TB_OK;
}



der fehler tritt sowohl bei dem spiel, als auch bei dem beispielprogramm mit den texten aus kapitel 3 auf.
sry, falls ich euch nerve, aber ich hoffe, dass ihr vielleicht eine idee habt.

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

6

07.05.2007, 16:24

Zitat von »"herzog"«


C-/C++-Quelltext

1
2
3
4
5
6
// Erstellen aus einem String

tbResult tbEffect::Init(char* pcCode,
                        int iSize)
{
    ...
}


Versuch mal

C-/C++-Quelltext

1
2
tbResult tbEffect::Init(const char* pcCode,
                        int iSize)

Ich00nix

Frischling

Beiträge: 63

Wohnort: Kaiserslautern

Beruf: Schüler

  • Private Nachricht senden

7

07.05.2007, 16:24

ich habe ein ähnliches prob:
wenn ich das spiel öffne kommt folgendes Fenster.
Die Anwendung konnte nicht gestartet werden, weil TriBase.dll nicht gefunden wurde. Neuinstallation könnte das Problem beheben.

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

8

07.05.2007, 16:26

Ich00nix
Das ist ein komplett anderes Problem und lässt sich beheben, indem du die Tribase.dll zugänglich machst (z.B. in selben Ordner wie die Exe)

Ich00nix

Frischling

Beiträge: 63

Wohnort: Kaiserslautern

Beruf: Schüler

  • Private Nachricht senden

9

07.05.2007, 16:56

ah sorry
aber trotzdem thx jetzt funzt es bei mir

10

08.05.2007, 19:22

nein macht keinen unterschied...hab das bei der engine geändert, neu erstellt und die dll ersetzt aber es kommt immernoch der gleiche fehler...

Werbeanzeige