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

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

21

17.09.2006, 10:29

Zitat von »"Riddick"«

C-/C++-Quelltext

1
2
    wchar_t* logfile = L"hallo";
    wcscpy_s (logfile, sizeof (logfile), L"Arial");


Das wäre die optimal Lösung ;)


Nein, die optimale Lösung wäre

C-/C++-Quelltext

1
2
    wchar_t* logfile = L"hallo";
    wcscpy_s (logfile, sizeof (logfile) / sizeof (logfile[0]), L"Arial");


Denn die maximale Größe wird in Zeichen gemessen, nicht in Bytes.
So hättest du den Code wieder unsicher gemacht.

Anonymous

unregistriert

22

17.09.2006, 10:31

Zitat von »"David Scherfgen"«

Zitat von »"Riddick"«

C-/C++-Quelltext

1
2
    wchar_t* logfile = L"hallo";
    wcscpy_s (logfile, sizeof (logfile), L"Arial");


Das wäre die optimal Lösung ;)


Nein, die optimale Lösung wäre

C-/C++-Quelltext

1
2
    wchar_t* logfile = L"hallo";
    wcscpy_s (logfile, sizeof (logfile) / sizeof (logfile[0]), L"Arial");


Denn die maximale Größe wird in Zeichen gemessen, nicht in Bytes.
So hättest du den Code wieder unsicher gemacht.
Möp falsch! Das ist ne Optimale

C-/C++-Quelltext

1
2
    wchar_t* logfile = L"hallo"; 
    wcscpy_s (logfile, wcslen (logfile) * sizeof (wchar_t), L"Arial");
Die Funktioniert auch wenn logfile per Parameter übergeben wird, Deine jedoch nicht.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

23

17.09.2006, 10:41

Ja, mir fällt auch grade auf, dass

sizeof (logfile)

völliger Unfug ist, da logfile ein Zeiger ist, und dessen Größe ist wohl 4 oder 8 Bytes.

Anonymous

unregistriert

24

17.09.2006, 10:42

David Scherfgen
Rischtisch

CodingCat

1x Contest-Sieger

Beiträge: 420

Beruf: Student (KIT)

  • Private Nachricht senden

25

17.09.2006, 11:20

Zitat von »"nix da"«

Zitat von »"David Scherfgen"«

...
Möp falsch! Das ist ne Optimale

C-/C++-Quelltext

1
2
    wchar_t* logfile = L"hallo"; 
    wcscpy_s (logfile, wcslen (logfile) * sizeof (wchar_t), L"Arial");
Die Funktioniert auch wenn logfile per Parameter übergeben wird, Deine jedoch nicht.


Also bei mir steht in der MSDN bei wcscpy_s als zweiter Parameter sizeInWords, d.h. deine Version stimmt auch nicht ganz - die optimale Version wäre dann:

C-/C++-Quelltext

1
2
wchar_t* logfile = L"hallo"; 
wcscpy_s (logfile, wcslen(logfile) + 1, L"Arial");

wcslen gibt die Anzahl der Chars in logfile zurück, ohne die 0 am Ende, deshalb + 1. Aber mit sizeof(wchar_t) darf nicht multipliziert werden, da wcscpy_s sizeInWords annimmt, nicht in Bytes. :)

26

17.09.2006, 11:54

Ok habs hinbekommen das Problem lag daran

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void CreateD3DFont(void)
{
    // Struktur für die Beschreibung der Schriftart
    // anlegen und Elemente mit 0 initialisieren
    D3DXFONT_DESCW LogFont = { 0 };
 
    // das Element lfFaceName muss den Namen der
    // gewünschten Schriftart enthalten
    wcscpy_s(LogFont.FaceName , L"Arial");

    // nach erfolgreichem Aufruf zeigt lpD3DFont
    // auf ein Objekt vom Typ D3DXFont
    D3DXCreateFontIndirect(lpD3DDevice,
                          &LogFont,
                          &lpD3DFont);
}

also erstmal an der Struktur so wie es Riddick und CodingCat sagte und eben an dem strcpy das mit wcscpy_s funktioniert

aber ich merke schon dass ich mich mit dem UNICODE mal besser beschäftigen muss hatte bisher noch nichts damit zu tun
dass es mit der Struktur nicht geklappt hat lag glaube ich an einer älteren DX Version da gab es auch den Unterschied das DrawText 5 statt 6 Parameter wollte
aber trozdem vielen Dank an Euch, ich hätte es sonst nicht hinbekommen

27

17.09.2006, 15:08

kennt jemand diese methode

void CSprite::Draw(void)
{
m_lpSprite->Draw(m_lpTexture,
NULL,
&D3DXVECTOR3(1.0f,1.0f,1.0f),
&m_vPosition,
0xFFFFFFAF);
}

versuch schon eine weile ein sprite darzustellen es wir au alles compiliert nur gezeichnet wird es nicht

ich denke dass es damit zu tun hat
achso es ist 2D

Anonymous

unregistriert

28

17.09.2006, 15:11

Was sagt denn der Debugger?

29

17.09.2006, 15:19

wird alles einwandfrei übersetzt

vieleicht kannst du mir ein tipp geben wie ich einfach ein sprite auf den schirm bekomme

Anonymous

unregistriert

30

17.09.2006, 15:24

Einen Tipp kann ich dir nicht geben, da ich nicht mit D3D arbeite, aber
überprüf doch mal die Werte der Variablen oder frage die Rückgabe
Werte der Draw Funktion mal ab.

Werbeanzeige