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

12.05.2004, 21:51

Kann keine ini-Datei auslesen

Also ich hab mir jetzt mal die Funktion zum laden von IniDaten zusammengebsatlet(mithilfe des Buches und der Tribase Engine)

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
int ReadINIInt(char Section[], char Key[])
{
    char acString[256];
    GetPrivateProfileString(Section, Key, "[NOT FOUND]",
                            acString, 256,
                            "Game.ini");
    if(!strcmp(acString, "[NOT FOUND]"))
    {
        Error("Ini String nicht gefunden!");
    }

    return atoi(acString);
}

Dann hab ich im Spielverzeichnis (da wo die exe liegt) die Datei "Game.ini" erstellt. Inhalt:

Quellcode

1
2
3
4
[VideoMode]
Widht  = 1024
Heigth = 768
Depth  = 32

Jetz will ich die Datei folgendermaßen auslesen:

Quellcode

1
2
3
4
int Width=0, Height=0, Depth=0, i=0;
        Width=ReadINIInt("VideoMode", "Width");
        Height=ReadINIInt("VideoMode", "Height");
        Depth=ReadINIInt("VideoMode", "Depth");

Aber es kommt jedesmal die String nicht gefunden Fehlermeldung. Weiß jemand zufällifgerweise wo der Fehler ist?

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

2

12.05.2004, 22:28

ähm, kommt die Fehlermeldung "Ini String nicht gefunden!" ??? Wenn ja dürfte das an der Codezeile if(!strcmp(..., [NOT FOUND]))
strcmp liefert 0 wenn die Strings übereinstimmen. Da das im Falle eines nicht-vorhandenseins ist, würde folgender Code auch funktionieren:

if(strcmp(..., "[NOT FOUND]") == 0) also wenn der String mit "NOT Found übereinstimmt, dann mache ....

[edit] ich habe mich geirrt, sry. das mit dem ! NICHT ist schon richtig, aber ich bevorzuge das mit dem == 0, ist meiner Meinung nach übersichtilicher.[/edit]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

12.05.2004, 22:34

nur so eine zwischenfrage.

gibts für *.ini dateien nicht winapi funktionen?

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

4

12.05.2004, 23:41

Zitat von »"dot"«

nur so eine zwischenfrage.

gibts für *.ini dateien nicht winapi funktionen?


Die Benutzt er doch

5

13.05.2004, 02:08

Eben. Aber er hat was vergessen und das ist auch sein Problem. Er liest die INI Datei aus die im Windows Verzeichnis liegt. Das ist eine recht komische sachen mit diesen Funktionen.

Du must einen absoluten Pfad angaben und keinen relativen. Dann sollte er auch die INI Datei auslesen die du haben willst.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

6

13.05.2004, 14:43

Ok, danke. Ihc habs sie mal ins Windowsverzeichnis kopiert, und jetzt gehts. Dumm nur, das die iniDatei dann immer im Windowsverzeichnis liegen muss. Aber wie funktioniert das bei Galactica? Da wird die ini Datei mit "Data\\Galactica.ini" angegeben. Weiß er dann das es ein ralativer Pfad sein muss? Denn normalerweise müsste er ja dann in c:\Windows\Data\" suchen.
Und selbst wenn er daran das irgendein Ordner angegeben wurde erkennt, das er nicht im Windoewsordner suchen soll, wie ma ich ihm dann klar, das er im selben Verzeichnis wo auch die exe ist suchen soll?

7

13.05.2004, 22:46

Was vieleicht geht ist, das wenn man das Aktuelle Verzeichnis setzt. Das kann man mit SetCurrentDirectory machen. Aber am besten ist es einfach immer den vollen Pfad anzugeben. Du kannst ja mit GetModuleFileName ermitteln lassen. Damit kannst du dann immer eine vollen Pfad erzeugen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

14.05.2004, 13:36

Zitat von »"Patrick"«

Zitat von »"dot"«

nur so eine zwischenfrage.

gibts für *.ini dateien nicht winapi funktionen?


Die Benutzt er doch


sorry, habs übersehen

9

14.05.2004, 14:23

Und wie bekomm ich den Namen der exe aus dem String? Ich könnte natürlich einfach den ganzen String durchgehen, und testen, wos anfängt, aber gibts da nicht ne einfacherere replace Funktion? mir fällt im Moment leider keine ein.

10

14.05.2004, 15:59

Mir schon. Meine eigenen kleinen Helferfunktionen. Aber denk doch mal selber nach, für solche kleinigkeiten stellt man nicht unbedingt ein extra Funktion bereit, das macht man eben schnell selber.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige