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

CrazyPlayer

Treue Seele

  • »CrazyPlayer« ist der Autor dieses Themas

Beiträge: 109

Wohnort: Mittenwald [Garmischpartenkirchen]

Beruf: Schüler

  • Private Nachricht senden

1

28.04.2009, 22:17

Vokabel Trainer - Zufallproblem [C++]

Hi,
ich programmiere zurzeit ein Vokabel Trainer. Ich hab erst neulich gelernt wie mann die Vokabeln mit ein *.ini Datei läd. Aber ich schaffe nicht wie ich ein int in LPCSTR umwandeln soll. Mit static_cast hab ich es schon versucht klappt aber auch nicht.
Hier die Codes:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void Random_Vokabel()
{

    DWORD destSize;
    destSize=500;

    srand((int) time(NULL));

    int A = rand()%10+1;

        GetPrivateProfileString("Unit1",A,"NULL",Vokabel,destSize,"Data\\English.ini");
 GetPrivateProfileString("Unit1",A,"NULL",R_Answer,destSize,"Data\\German.ini");     

}
Natürlich wird das oben nicht funktionieren.
So soll die English.ini Datei ausehen.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
[Unit1]

1=german
2=good
3=forever
4=way
5=forest
6=game
7=water
8=sun
9=car
10=bed

German.ini

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
[Unit1]

1=Deutsch
2=gut
3=für immer
4=weg
5=Wald
6=Spiel
7=Wasser
8=Sonne
9=Auto
10=Bett


Weiß jemand wie dieses Problem lössen kann.
Danke im voraus :D
Every day is a programming day ;)

2

28.04.2009, 22:22

Aufgrund der leeren Parameterliste (und dem Fehlen von VA-Makros) nehme ich an, du programmierst C++. Bitte beim nächsten Mal hinzu schreiben. ;)

Bei der Umwandlung helfen dir std::stringstream und std::string (dort c_str(), um einen const char* zu erhalten).

Übrigens wird dir rand() keinen guten Zufall bringen, wenn du srand() immer wieder aufrufst. Die Funktion srand() sollte nur einmal (z.B. zu Programmbeginn) verwendet werden. Mehr dazu findest du ebenfalls unter www.cplusplus.com.

CrazyPlayer

Treue Seele

  • »CrazyPlayer« ist der Autor dieses Themas

Beiträge: 109

Wohnort: Mittenwald [Garmischpartenkirchen]

Beruf: Schüler

  • Private Nachricht senden

3

28.04.2009, 22:33

thx, ich versuch es hinzu griegen.
PS: Ich merks mir jetzt das ich bei der Überschrift C++ schreibe
EDIT:

Ist std::stringstream und std::string nicht für strings?
Jedenfalls mit string geht es nicht

Quellcode

1
1>.\main.cpp(213) : error C2664: 'GetPrivateProfileStringA': Konvertierung des Parameters 2 von 'std::string' in 'LPCSTR' nicht möglich
Every day is a programming day ;)

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

4

28.04.2009, 23:27

Zitat von »"CrazyPlayer"«

thx, ich versuch es hinzu griegen.
PS: Ich merks mir jetzt das ich bei der Überschrift C++ schreibe
EDIT:

Ist std::stringstream und std::string nicht für strings?
Jedenfalls mit string geht es nicht

Quellcode

1
1>.\main.cpp(213) : error C2664: 'GetPrivateProfileStringA': Konvertierung des Parameters 2 von 'std::string' in 'LPCSTR' nicht möglich


Du musst auf dem String-Objekt ja auch noch c_str() aufrufen.
Was mich aber verwundert, ist: Ich dachte immer, das "LP" vor dem "CSTR" stände für "Left-Pointer". Aber c_str() liefert laut Referenz einen const char*. Wo liegt mein Denkfehler?
<< an dieser Stelle ist eine Signatur verstorben >>

5

28.04.2009, 23:36

Zitat von »"CrazyPlayer"«

Jedenfalls mit string geht es nicht
In meinem letzten Post gab es nach dem Link zu std::string eine gewisse Klammerbemerkung... :p

Zitat von »"the[V«

oid"]Was mich aber verwundert, ist: Ich dachte immer, das "LP" vor dem "CSTR" stände für "Left-Pointer". Aber c_str() liefert laut Referenz einen const char*. Wo liegt mein Denkfehler?
Soviel ich weiss, steht das LP für Long Pointer. Da gibt es aber bestimmt Leute, die sich besser mit dessen Herkunft auskennen als ich... :)

Übrigens, inwiefern siehst du einen Widerspruch zu const char*? Das CSTR heisst wohl Const-String; was hast du dir unter "Left Pointer" vorgestellt?

6

28.04.2009, 23:46

http://cplus.kompf.de/artikel/random.html

C-/C++-Quelltext

1
2
3
4
5
6
#include <sstream>

std::ostringstream ss;
ss << myInteger;

use_constcharpointer(ss.str().c_str());
;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

the[V]oid

Alter Hase

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

7

29.04.2009, 00:52

Zitat von »"Nexus"«

Übrigens, inwiefern siehst du einen Widerspruch zu const char*? Das CSTR heisst wohl Const-String; was hast du dir unter "Left Pointer" vorgestellt?


Ich dachte, das CSTR würde für C-String stehen, als Abgrenzung zu Strings in C++.
Aber die Bedeutung als Const-String ist wohl wahrscheinlicher.
<< an dieser Stelle ist eine Signatur verstorben >>

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

8

29.04.2009, 00:58

Zitat von »"the[V«

oid"]

Zitat von »"Nexus"«

Übrigens, inwiefern siehst du einen Widerspruch zu const char*? Das CSTR heisst wohl Const-String; was hast du dir unter "Left Pointer" vorgestellt?


Ich dachte, das CSTR würde für C-String stehen, als Abgrenzung zu Strings in C++.
Aber die Bedeutung als Const-String ist wohl wahrscheinlicher.


Benutzt die Win-API überhaupt C++-Strings?

10

29.04.2009, 18:13

WinAPI ist vollständig C. Daher ist mit STR IMMER ein String im Sinne von char* gemeint.


LPCSTR
Long
Pointer
Const
STRing

;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige