Du bist nicht angemeldet.

Werbeanzeige

1

11.04.2017, 10:13

Probleme mit der ReadINIColor Funktion aus dem Spiel "Galactica"

Hallo,

ich wollte die ReadINI - Funktionen aus dem Spiel "Galactica" für ein anderes Projekt verwenden, und habe diese deshalb gleich der TriBase hinzugefügt. Ich habe sie ein klein wenig modifiziert, weil beim Spiel Galactica die Datei "Galactica.ini" verwendet wird. Bei meinen Funktionen muss man auch den Ort der *.INI Datei angeben (ist ja logisch :D ). Jedoch bekomme ich einen Fehler, wenn ich den Header für ReadINIColor erstelle. Wenn ich mit der Maus über den Header von "tbReadINIColor" fahre, sagt mir VS, dass eine Überladung von Funktionen anhand des Rückgabewertes nicht erlaubt ist.
Hier der Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Liest einen String aus der INI-Datei
tbResult tbReadINIString(char* pcSection, char* pcKey, char* pcOut, int iBufferSize, LPCSTR cFile);

// Liest einen int-Wert aus der INI-Datei
int tbReadINIInt(char* pcSection, char* pcKey, LPCSTR cFile);

// Liest einen float-Wert aus der INI-Datei
float tbReadINIFloat(char* pcSection, char* pcKey, LPCSTR cFile);

// Liest einen tbVector3-Wert aus der INI-Datei
tbVector3 tbReadINIVector3(char* pcSection, char* pcKey, LPCSTR cFile);

// Liest einen tbColor-Wert aus der INI-Datei
tbColor tbReadINIColor(char* pcSection, char* pcKey, LPCSTR cFile); // Dieser Code bereitet über 100 Fehler in der Datei "tbColor.h"


Hier der Code von den Funktionen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Liest einen int-Wert aus der INI-Datei
int tbReadINIInt(char* pcSection,
    char* pcKey,
    LPCSTR cFile)
{
    char acString[256];

    // String lesen
    tbReadINIString(pcSection, pcKey, acString, 256, cFile);
    if (!strcmp(acString, "[NOT FOUND]")) return 0;

    // In int-Wert umwandeln
    return atoi(acString);
}

// __________________________________________________________________
// Liest einen float-Wert aus der INI-Datei
float tbReadINIFloat(char* pcSection,
    char* pcKey,
    LPCSTR cFile)
{
    char    acString[256];
    float   fValue;


    // String lesen
    tbReadINIString(pcSection, pcKey, acString, 256, cFile);
    if (!strcmp(acString, "[NOT FOUND]")) return 0.0f;

    // In float-Wert umwandeln
    sscanf(acString, "%f", &fValue);

    return fValue;
}

// __________________________________________________________________
// Liest einen tbVector3-Wert aus der INI-Datei
tbVector3 tbReadINIVector3(char* pcSection,
    char* pcKey,
    LPCSTR cFile)
{
    char        acString[256];
    tbVector3   vValue;


    // String lesen
    tbReadINIString(pcSection, pcKey, acString, 256, cFile);
    if (!strcmp(acString, "[NOT FOUND]")) return tbVector3(0.0f, 0.0f, 0.0f);

    // Die Vektorkomponenten extrahieren
    sscanf(acString, "%f, %f, %f", &vValue.x, &vValue.y, &vValue.z);

    return vValue;
}

// __________________________________________________________________
// Liest einen tbColor-Wert aus der INI-Datei
tbColor tbReadINIColor(char* pcSection,
    char* pcKey,
    LPCSTR cFile)
{
    char    acString[256];
    tbColor Value;


    // String lesen
    tbReadINIString(pcSection, pcKey, acString, 256, cFile);
    if (!strcmp(acString, "[NOT FOUND]")) return tbColor(0.0f, 0.0f, 0.0f, 0.0f);

    // Die Farbkomponenten extrahieren
    sscanf(acString, "%f, %f, %f, %f", &Value.r, &Value.g, &Value.b, &Value.a);

    return Value;
}

// __________________________________________________________________
// Liest einen String aus der INI-Datei
tbResult tbReadINIString(char* pcSection,
    char* pcKey,
    char* pcOut,
    int iBufferSize,
    LPCSTR cFile)
{
    // String lesen
    GetPrivateProfileString(pcSection, pcKey, "[NOT FOUND]",
        pcOut, iBufferSize,
        cFile);

    return TB_OK;
}

Ich hoffe ihr könnt mir helfen.
Grüße Patrick
Albert Einstein sagte: "2 Stunden mit einem netten Mädchen fühlen sich an wie 20 Minuten, 20 Minuten auf einem heißen Ofen fühlen sich an wie 2 Stunden. - Das ist Relativität"

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Patrick Z.« (11.04.2017, 10:19)


BlueCobold

Community-Fossil

Beiträge: 10 859

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

11.04.2017, 10:44

Inkludierst du den Header, in dem tbColor deklariert wird?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

11.04.2017, 10:48

Der Header ist in tbReadINI.h

Und die Funktion ist in tbReadINI.cpp
Albert Einstein sagte: "2 Stunden mit einem netten Mädchen fühlen sich an wie 20 Minuten, 20 Minuten auf einem heißen Ofen fühlen sich an wie 2 Stunden. - Das ist Relativität"

BlueCobold

Community-Fossil

Beiträge: 10 859

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

11.04.2017, 10:49

Das war nicht meine Frage. Meine Frage war, ob du den Header, in dem der Datentyp 'tbColor' deklariert wird, in den INI-Header inkludierst.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

11.04.2017, 10:54

Achso, hab ich wohl falsch verstanden.

Zur Frage: Indirekt, da ich die Datei "TriBase.h" inkludiere und in dieser ist die Datei "tbColor.h" inkludiert, in der tbColor deklariert ist.
Albert Einstein sagte: "2 Stunden mit einem netten Mädchen fühlen sich an wie 20 Minuten, 20 Minuten auf einem heißen Ofen fühlen sich an wie 2 Stunden. - Das ist Relativität"

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Patrick Z.« (11.04.2017, 11:31)


ByteJunkie

Alter Hase

Beiträge: 834

Wohnort: Deutschland

Beruf: Softwareentwickler

  • Private Nachricht senden

6

11.04.2017, 14:41

Hey,

ich hab mal einfach Deine hier geposteten Codes in die Tribase gepackt. Funktioniert ohne Probleme.

Hab die ersten Quellcodes in die tbINI.h gepackt.
Hab die zweiten Codes in die tbINI.cpp gepackt.
Hab einen Verweis in die Tribase.h gemacht, kompiliert und fertig! :)
Irgend etwas machst Du anders. :huh:
"Alles bleibt wie immer. :rolleyes: Wenn es nicht besser wird, wird es schlimmer!." :huh:

7

11.04.2017, 15:04

Ich hab jetzt auch noch einmal die Dateien tbReadINI.h und tbReadINI.cpp neu erstellt und hinzugefügt. Und siehe da --> Es funktioniert.

Ich habe keine Idee, was ich falsch gemacht habe, aber es funktioniert. :D
Albert Einstein sagte: "2 Stunden mit einem netten Mädchen fühlen sich an wie 20 Minuten, 20 Minuten auf einem heißen Ofen fühlen sich an wie 2 Stunden. - Das ist Relativität"

Werbeanzeige