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

24.06.2006, 18:58

char[] -> LPCTSTR

Ich möchte für ein kleines Program die Funktion "GetPrivateProfileString()"
http://msdn.microsoft.com/library/defaul…ofilestring.asp
nutzen.

Allerdings muß ich die Argumente (char[]) manuell in LPCTSTR umcasten.
Als ich die Funktion in einem anderen Programm, das auf einem Spiel aus David's Buch basiert, verwendet habe, mußte ich nicht casten.

Jetzt würde ich gerne wissen wie man es hinbekommt, daß automatisch gecastet wird. Evtl. noch irgendwas dazulinken?

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

2

24.06.2006, 19:46

GetPrivateProfileStringW
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

3

24.06.2006, 21:09

Das ist ja nur die Unicode Variante der Funktion, die wird sowieso standardmäßig verwendet.
Leider schluckt die aber auch keine char-Arrays...

EDIT: Umcasten klappt auch nicht; der Kompieler meckert dann zwar nicht, aber es kommt Murks raus.

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

4

25.06.2006, 03:24

GetPrivateProfileStringA vielleicht?

Oder eben einfach UNICODE nutzen - also wchar_t statt char und L"Text" statt "Text"

5

25.06.2006, 14:33

Erstmal Danke für die Antworten.

Mit wchar_t klappt's natürlich; ich frage mich aber warum ein und die selbe Funktion in David's Breakanoid char-Arrays schluckt, und in einem anderen Projekt nicht.
Außerdem müßte ich dann für alle Argumente Variablen benutzen; wenn ich nämlich sowas wie "bla" in den Funktionsaufruf schreibe meckert er auch weil "bla" ein char[] ist.

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

6

25.06.2006, 15:11

Ich hab doch geschrieben, dass du nicht

C-/C++-Quelltext

1
2
3
4
5
"bla"

// sondern


L"bla"
brauchst.

//
Ansonsten in den Projekteinstellungen mal UNICODE / Multibytezeichen deaktivieren.

7

25.06.2006, 15:28

Mich hat ja nur verwirrt, daß in einem anderen Projekt

C-/C++-Quelltext

1
GetPrivateProfileString(aBSection, "modelFile", "NULL", pHouse->m_pModelFile, sizeof(pHouse->m_pModelFile), "Data\\map1.ini");


funktioniert.

Ich hab jetzt aber gerade bemerkt das da wohl irgendwo

C-/C++-Quelltext

1
#define GetPrivateProfileString GetPrivateProfileStringA


steht. Und das erklärt natürlich alles :D

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

8

25.06.2006, 18:02

Zitat von »"grek40"«

GetPrivateProfileStringA vielleicht?

:roll:

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

9

26.06.2006, 10:01

Die neuen Compiler von MS arbeiten alle mit Unicode als Standard. Früher war das nicht so. Man musste entweder Unicode in den Projekteinstellungen aktivieren oder ein define Unicode hinklatschen.

In der WinAPI gibt es immer zwei Varianten einer Funktion, einmal die ANSI Variante mit FunctionNameA und die Unicode Variante FunctionNameW. Da man als Programmierer aber faul ist exestiert auch eine Funktion FunktionName. FunctionName ist in etwa so definiert:

C-/C++-Quelltext

1
2
3
4
5
#ifdef UNICODE
#define FunName FunNameA
#else
#define FunName FunNameW
#endif


Du kannst etwweder Unicode verwenden, Unicode deaktivieren (z.B. mit #undef UNICODE) oder eben in den Projekteinstellungen.

Werbeanzeige