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

Anonymous

unregistriert

1

01.08.2003, 14:10

GetPrivateProfileString???

Hallo,

ich habe einen char-String (länge nicht bekannt), in einer *.ini-Datei stehen. Nun weiß ich nicht, wie ich diesen String auslesen kann.

Klasse:

Quellcode

1
2
3
4
5
class CTest {
public:
// ...
char    m_cHelpText;           // Hilfetext
}


Und dann steht irgendwo:

Quellcode

1
2
3
GetPrivateProfileString("Allgemein","HelpText","Default",(char*)(&g_pTest->m_cHelpText[1024]),sizeof(g_pTest->m_cHelpText),"data\\test.ini");
// -------------------
m_pGUI->CreateText(105, 1, tbVector2(20.0f, 20.0f), (char*)(g_pTest->m_cHelpText));


Nun kommen keine Fehlermeldungen, aber der Text wird nicht angezeigt.

Viele Danke,

Sharker

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

01.08.2003, 14:13

Re: GetPrivateProfileString???

Zitat von »"Sharker"«

char m_cHelpText; // Hilfetext

Sicher, dass Du kein Array benutzt? So ist ja nur Platz für ein Zeichen...

Anonymous

unregistriert

3

01.08.2003, 14:13

Wie, was???

Anonymous

unregistriert

4

01.08.2003, 14:14

Die Länge ist ja vorher nicht bekannt. (Maximal aber 1024)

Anonymous

unregistriert

5

01.08.2003, 14:17

Aber sont würde ja EIN Buchstabe angezeigt... Aber es wird ja kein BUCHSTABE angezeigt...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

01.08.2003, 14:39

Nein, das kann so nicht gehen! Mache mal ein Array mit z.B. 10000 Elementen draus. Ein einzelner char bringt garnichts, der wird von der Funktion nämlich direkt mit Null gefüllt, da diese Strings ja immer mit einer Null enden. Es ist schon richtig so, dass Du kein Zeichen siehst, weil selbst ein leerer String ein Zeichen braucht, nämlich die Null.

7

01.08.2003, 16:17

Desweiteren find ich das hier recht komisch "(char*)(&g_pTest->m_cHelpText[1024])". In dem String kann überhaupt nichts drin stehen, da du erstens nur ein Zeichen einliest, wegen sizeof(g_pText->m_cHelpText) == 1, und zweitens weil du das Zeichen an eine völlig falsche Speicheradresse schreibst. Wenn müste es so heißen:

Quellcode

1
GetPrivateProfileString("Allgemein","HelpText","Default",(char*)(&g_pTest->m_cHelpText),sizeof(g_pTest->m_cHelpText),"data\\test.ini");
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Anonymous

unregistriert

8

01.08.2003, 16:54

zudem wird er die datei nicht finden

MSDN:

Zitat

lpFileName
Pointer to a null-terminated string that names the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory.

Also musst du schon "./data/test.ini" schreiben..

DarthB

Treue Seele

Beiträge: 265

Beruf: Schüler

  • Private Nachricht senden

9

01.08.2003, 21:36

Hmm wie bekommt eigentlich das Verzeichniss des Programmes raus?
Durch diesen "." den du davor gemacht hast?

Anonymous

unregistriert

10

01.08.2003, 21:50

ja der punkt ist fürs aktuelle verzeichnis, ".." is fürs übergeornete verzeichnis

Werbeanzeige