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

Phili

unregistriert

1

31.05.2006, 13:35

Warnungen ausschalten

Gibt es in VC++2005 eine Möglichkeit, nur die Warnung "Konvertierung don double zu float-möglicher Datenverlust" auszuschalten?

Ich hab nämlich gerade versucht, meine Dateien, die eigentlich bisher immer erst zur laufzeit geladen wurden inf Header umgewandelt, um sie direkt einzubinden. Die Angaben der float-Variablen haben jeweils kein "f" Nach der Zahl und spucken deswegen derzeit an die 50000 Warnungen aus.
Wenn ich aber einfach hinter alle floats nen "f" klemme gibts probleme bei Ganzen Zahlen.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

31.05.2006, 13:51

C-/C++-Quelltext

1
#pragma warning( disable: warnungs_nummer )

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

3

31.05.2006, 14:18

Re: Warnungen ausschalten

Zitat von »"Phili"«


Wenn ich aber einfach hinter alle floats nen "f" klemme gibts probleme bei Ganzen Zahlen.


aus

C-/C++-Quelltext

1
float f = 5;

mach

C-/C++-Quelltext

1
float f = 5.0f;


Und die Warnungen zu ignorieren ist eher uncool weil da bei bestimmten Werten Fehler oder Ungenauigkeiten auftreten.

Phili

unregistriert

4

31.05.2006, 14:37

@Spik)evil(
Ich wüsst gern, wie das gehen soll- Ich hab ne Textdatei mit den daten und mach daraus ne Funktion in ner Header, die Die Daten in ne Struktur füllt.
Wenn jetzt halt 9 in der Datei steht, dann steht auch 9 in der Header.
Ich les die werte ja einfach mit fstream ein und aus.

//Edit: Ach, dass heißt, es gibt doch die Möglichkeit, ne fixe Menge, von Stellen auzugeben- muss ich gleich mal nachschlagen...

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

5

31.05.2006, 15:21

also irgendwie kann ich mir das nicht genau vorstellen, vielleicht postest du am besten mal den code der lese und schreib funktionen.

Phili

unregistriert

6

31.05.2006, 16:13

Wenns weiter nichts ist:


Die Funktion, die die Datei in eine Header umwandelt:


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
91
92
93
94
95
96
97
98
99
100
101
102
#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main()
{
    cout<<"Die zu konvertierende Datei:\n";
    char filename1[100];
    cin>>filename1;
    cout<<"DIe Zieldatei:\n";
    char filename2[100];
    cin>>filename2;
    cout<<"Name des entstehenden Objekts:\n";
    char Name[10];
    cin>>Name;
    ifstream ifs(filename1);
    ofstream ofs(filename2);
    string a;
    int Menge;
    float Wert;
    ofs<<"#include \"PH3DFile.h\"\n\n";
    ofs<<"PH3DFile "<<Name<<"()\n";
    ofs<<"{\n";
    ofs<<"   PH3DFile File;\n";
    for(int i=0; i<10; i++)
    {
        if(Name[i]=='\0')
        {
            ofs<<"   File.Name["<<i<<"]='\\0';";
            break;
        }
        ofs<<"   File.Name["<<i<<"]='"<<Name[i]<<"';";
    }
    ofs<<"   File.ChunkMenge=3;\n";
    ofs<<"   File.Chunks[0].Name[0]='P';\n";
    ofs<<"   File.Chunks[0].Name[1]='o';\n";
    ofs<<"   File.Chunks[0].Name[2]='s';\n";
    ofs<<"   File.Chunks[0].Name[3]='i';\n";
    ofs<<"   File.Chunks[0].Name[4]='t';\n";
    ofs<<"   File.Chunks[0].Name[5]='i';\n";
    ofs<<"   File.Chunks[0].Name[6]='o';\n";
    ofs<<"   File.Chunks[0].Name[7]='n';\n";
    ofs<<"   File.Chunks[0].Name[8]='\\0';\n";
    ofs<<"   File.Chunks[1].Name[0]='T';\n";
    ofs<<"   File.Chunks[1].Name[1]='e';\n";
    ofs<<"   File.Chunks[1].Name[2]='x';\n";
    ofs<<"   File.Chunks[1].Name[3]='t';\n";
    ofs<<"   File.Chunks[1].Name[4]='u';\n";
    ofs<<"   File.Chunks[1].Name[5]='r';\n";
    ofs<<"   File.Chunks[1].Name[6]='\\0';\n";
    ofs<<"   File.Chunks[2].Name[0]='N';\n";
    ofs<<"   File.Chunks[2].Name[1]='o';\n";
    ofs<<"   File.Chunks[2].Name[2]='r';\n";
    ofs<<"   File.Chunks[2].Name[3]='m';\n";
    ofs<<"   File.Chunks[2].Name[4]='a';\n";
    ofs<<"   File.Chunks[2].Name[5]='l';\n";
    ofs<<"   File.Chunks[2].Name[6]='\\0';\n";
    while(!ifs.fail())
    {
        ifs>>a;
        if(a=="Start")
        {
            ifs>>a;
            if(a=="Position")
            {
                ifs>>Menge;
                ofs<<"   File.Chunks[0].Menge="<<Menge*3<<";\n";
                ofs<<"   File.Chunks[0].Werte=new float["<<Menge*3<<"];\n";
                for(int i=0; i<Menge*3; i++)
                {
                    ifs>>Wert;
                    ofs<<"   File.Chunks[0].Werte["<<i<<"]="<<Wert<<";\n";
                }
            }
            if(a=="Textur")
            {
                ifs>>Menge;
                ofs<<"   File.Chunks[1].Menge="<<Menge*2<<";\n";
                ofs<<"   File.Chunks[1].Werte=new float["<<Menge*2<<"];\n";
                for(int i=0; i<Menge*2; i++)
                {
                    ifs>>Wert;
                    ofs<<"   File.Chunks[1].Werte["<<i<<"]="<<Wert<<";\n";
                }
            }
            if(a=="Normal")
            {
                ifs>>Menge;
                ofs<<"   File.Chunks[2].Menge="<<Menge*3<<";\n";
                ofs<<"   File.Chunks[2].Werte=new float["<<Menge*3<<"];\n";
                for(int i=0; i<Menge*3; i++)
                {
                    ifs>>Wert;
                    ofs<<"   File.Chunks[2].Werte["<<i<<"]="<<Wert<<";\n";
                }
            }
        }
    }
    ofs<<"   return File;\n";
    ofs<<"}\n";
}




PH3DFile:


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef _PH3DFILE_
#define _PH3DFILE_

class PH3DChunk
{
public:
    char Name[10];
    int Menge;
    float *Werte;
};

class PH3DFile
{
public:
    char Name[10];
    int ChunkMenge;
    PH3DChunk *Chunks;
};

#endif



Der Aufbau der Anfangsdatei int das .ph Format:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-"Start"

-Art der Daten(Position, Textur, Normal...)

-Menge der Daten

-Daten

-Art der Daten(Position, Textur, Normal...)

-Menge der Daten

-Daten
...

ext

Treue Seele

  • Private Nachricht senden

7

31.05.2006, 16:44

Die Warnung kannst du in deinem Fall ja getrost ignorieren, da du den "Datenverlust" ja willst bzw. hinnehmen musst.

Pack deine Zuweisungen in so einen Block und die Sache ist erledigt :)
#pragma warning(disable: 4244)
#pragma warning(default: 4244)

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

8

31.05.2006, 17:40

an welchen stellen warnt er denn genau?
Übrigens würd ich dir mal Quellcodekommentare empfehlen^^
btw ich mach für Chunks immer wchar_t arrays mit ner festen Länge von 255, da spart man sich nämlich dieses buchstabenweise abgespeicher ;)

Phili

unregistriert

9

31.05.2006, 18:24

@Spik)evil(
Er warnt halt an Stellen wie diesen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
 File.Chunks[0].Werte[0]=-8.85;
   File.Chunks[0].Werte[1]=18.1;
   File.Chunks[0].Werte[2]=9.75;
   File.Chunks[0].Werte[3]=-8.43333;
   File.Chunks[0].Werte[4]=17.2667;
   File.Chunks[0].Werte[5]=9.33333;
   File.Chunks[0].Werte[6]=-9.1;
   File.Chunks[0].Werte[7]=17.8;
   File.Chunks[0].Werte[8]=9;
   File.Chunks[0].Werte[9]=-9.1;
   File.Chunks[0].Werte[10]=16.2;


Die Geschwindigkeit und der Speicherverbrauch st nicht das Problem, braucht auch so nur 2-3Sekunden.

Ich selbst versteh meinen Quellcode ganz gut... :D.

Was mich eher stört ist, das ich komplexe Modelle direkt einbinde, und VC++ 2005 jetzt seit etwa 3 Stunden die 7mb Code generiert... :shock:

Anonymous

unregistriert

10

31.05.2006, 19:14

Wenn ich hier auch nur einen sehe der hier Warnungen ausschaltet, dem reiß ich eigenhändig die Rübe ab!

Was denkt ihr wohl wofür die da sind? Zur Belustigung? man oh man... Denkt ihr etwa durch deaktivierung einer Warnung ist das Problem behoben? Bullshit!

Wenn er sagt das ist so nicht ganz richtig, dann ist das ein potenzieller Fehler im Code!

Gute Programmierer machen also eines: Sie analysieren das Problem und lösen es!
Kaputte und grottige Programmierer machen eines: Sie deaktivieren die Warnung und hoffen alles ist gut.

Also: Was wollt ihr sein? Gute Coder oder idiotische und grottige Coder?

Werbeanzeige