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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

27.12.2012, 18:52

Zeig mal den Code...

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

12

27.12.2012, 18:54

Stimmt, ich hatte es mit LPCTSTR verwechselt. Sorry.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

13

27.12.2012, 20:01

Main.cpp:

C-/C++-Quelltext

1
2
3
4
5
6
7
std::string Filename;
    for(int i=0;i<37;i++)
    {
        printf(Filename.c_str(), "C:/Anim/bla%d.png", i+1);
        RManager.AddTexture(Filename);
        Player.AddAnimationSprite("anim1", RManager.GetTexture(Filename));
    }


Resourc*n (illegales Wort) Manager:

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
LPDIRECT3DTEXTURE9 CResourceManager::GetTexture(std::string lpTextureName){
    std::map<std::string, LPDIRECT3DTEXTURE9>::iterator result;
    result = m_MapTextures.find(lpTextureName);

    if(result == m_MapTextures.end()){
     MessageBox(0, "NULL!", "RManager", MB_OK | MB_ICONINFORMATION);
     return NULL;
    }
    MessageBox(0, result->first.c_str(), "RManager", MB_OK | MB_ICONINFORMATION);
    return result->second;
}

void CResourceManager::AddTexture(std::string lpFileName){
    LPDIRECT3DTEXTURE9 lpTexture = GetTexture(lpFileName);

    char debugBuffer[250];

    if(!lpTexture)
    {
     D3DXIMAGE_INFO ImageInfo;
     D3DXGetImageInfoFromFile(lpFileName.c_str(), &ImageInfo);
     D3DXCreateTextureFromFileEx(m_lpD3DDevice,
                                 lpFileName.c_str(),
                                 ImageInfo.Width,
                                 ImageInfo.Height,
                                 1,0,
                                 D3DFMT_UNKNOWN,
                                 D3DPOOL_MANAGED,
                                 D3DX_FILTER_NONE,
                                 D3DX_FILTER_NONE,
                                 0,0,0,
                                 &lpTexture);
     m_MapTextures[lpFileName] = lpTexture;
     
     printf(debugBuffer, "Hinzugefügt:\n%s", lpFileName.c_str());

     MessageBox(0, debugBuffer, "Meldung", MB_OK | MB_ICONINFORMATION);
    }
    else
    {
     printf(debugBuffer, "Nicht hinzugefügt:\n%s", lpFileName.c_str());
     MessageBox(0, debugBuffer, "Meldung", MB_OK | MB_ICONERROR);
    }
}
Hi

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

27.12.2012, 20:11

Und das funktioniert jetzt, oder was genau gibt es für Probleme damit?

15

27.12.2012, 20:25

Ist immernoch das alte Problem, wobei jetzt garkeine Textur mehr da ist. Und die MessageBox hat nun komisch ASCII Zeichen, weil ich den std::string in LPCSTR konvertiert habe
Hi

Tobiking

1x Rätselkönig

  • Private Nachricht senden

16

27.12.2012, 20:26

Das sprintf (ich vermute das es sprintf ist, da ein printf in der Form keinen Sinn ergibt) in Main.cpp funktioniert so nicht. Der von c_str() zurückgegebene C-String ist nicht unbedingt der in dem std::string verwendete. Wenn du C++ verwenden willst, dann verwende es bitte auch und misch es nicht mit C. Die allgemeine Empfehlung dafür ist mal wieder ein gutes C++ Buch. Selbst beim Verwenden von C APIs lässt sich in der Regel ordentlich C++ verwenden.

17

27.12.2012, 20:35

Das sprintf (ich vermute das es sprintf ist, da ein printf in der Form keinen Sinn ergibt) in Main.cpp funktioniert so nicht. Der von c_str() zurückgegebene C-String ist nicht unbedingt der in dem std::string verwendete. Wenn du C++ verwenden willst, dann verwende es bitte auch und misch es nicht mit C. Die allgemeine Empfehlung dafür ist mal wieder ein gutes C++ Buch. Selbst beim Verwenden von C APIs lässt sich in der Regel ordentlich C++ verwenden.
Stimmt danke, es liegt wohl an printf! Ich verbesser das schnell und sag euch bescheid.
Hi

18

27.12.2012, 20:58

Alternativen sind btw. stringstreams oder boost::format:
http://www.boost.org/doc/libs/1_52_0/lib…doc/format.html
Lieber dumm fragen, als dumm bleiben!

19

27.12.2012, 21:22

Alternativen sind btw. stringstreams oder boost::format:
http://www.boost.org/doc/libs/1_52_0/lib…doc/format.html
Danke, aber das brauche ich nicht :)

Es funktioniert nun alles wie geschmiert! Danke an alle die mir geholfen haben :)
Hi

Werbeanzeige