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

28.08.2008, 16:49

[Erledigt] binary file lese Fehler

Hallo,

ich habe einen komischen Fehler den ich nicht aufspüren kann...
Und zwar habe ich 2 exe Dateien die beide im Code die selbe Struktur haben:

C-/C++-Quelltext

1
2
3
4
5
6
7
struct s_Static
{
    int textureNumber;
    float width, heigth;
    float xPos, yPos;
    float rotation;
};


Die eine exe speichert 2 ausgefüllte strukturen in eine .txt Datei , in etwa so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Static[0].xPos =-5.0f;
    Static[0].yPos = 0.0f;
    Static[0].textureNumber= 2;
    Static[0].width=265.0f;
    Static[0].heigth=128.0f;
    Static[0].rotation=0.0f;

    Static[1].xPos =0.0f;
    Static[1].yPos = -1.0f;
    Static[1].textureNumber= 2;
    Static[1].width=128.0f;
    Static[1].heigth=128.0f;
    Static[1].rotation=0.0f;
    
    std::ofstream Output("level1.txt", std::ios::binary);

    Output.write((char*) &Static[0], sizeof(Static[0]));
    Output.write((char*) &Static[1], sizeof(Static[1]));
    Output.close();


Das klappt ja alles ganz gut, aber wenn ich jetz mit der anderen exe versuche diese Strukturen zu lesen, erhalte ich ganz komische Werte...
Das ist meine lese Funktion :

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
std::ifstream Input("level1.txt", std::ios::binary);

    int numberOfStaticBoxes = 1;
    s_Static Static[2];

    Input.read((char*) &Static[0], sizeof(s_Static));
    Input.read((char*) &Static[1], sizeof(s_Static));

    Input.close();
    for (int i = 0; i<=1; i ++)
    {
        m_game->CreateStatic(&Static[i]);   // hier haben die Static komische werte und somit stürzt das Programm ab, da es solche Werte nicht verarbeiten kann

    }



Bitte um Hilfe,
wenn ihr noch irgendwelchen QuellCode braucht, einfach sagen


MfG Unknown

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

28.08.2008, 17:10

Was für komische Werte denn? Bei mir klappt das alles!
@D13_Dreinig

Anonymous

unregistriert

3

28.08.2008, 18:22

Sieht für mich nach einem Alignment-Fehler aus.

4

28.08.2008, 18:22

Komische Werte à la 23652357-16e oder -5640684904....

EDIT: und wie mache ich diesen Fehler weg ;)

5

28.08.2008, 19:13

https://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=9839&highlight=

vll hilft dir das.
Ich gebe bei der Arbeit immer 100%

6% Montags
30% Dienstags
35% Mittwochs
25% Donnerstag
4% Freitag

6

28.08.2008, 19:45

Also ist das die einzige möglickeint, jede Variable etc. einzeln einzulesen...

Weil das mit #pragma pack klappt net

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

7

28.08.2008, 20:00

Zitat von »"Unknown"«

Komische Werte à la 23652357-16e oder -5640684904....

EDIT: und wie mache ich diesen Fehler weg ;)


Was macht denn die Funktion: CreateStatic(&Static); ??
@D13_Dreinig

8

28.08.2008, 20:19

Die erstellt ein Physik objekt, das funktioniert alles, habe ich ohne laden getestet.

Aber wenn ich die lese und schreibe funktion in eine exe packe klappt das, und wenn ich vor dem laden if ( Input != NULL ) {...} mache, überspringt er das laden....


Iwas stimmt mit dem laden net..

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

28.08.2008, 20:30

vergleiche

C-/C++-Quelltext

1
2
Output.write((char*) &Static[0], sizeof(Static[0]));
Output.write((char*) &Static[1], sizeof(Static[1]));


mit

C-/C++-Quelltext

1
2
Input.read((char*) &Static[0], sizeof(s_Static));
Input.read((char*) &Static[1], sizeof(s_Static));


Vorallem die Größenangaben.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

10

28.08.2008, 20:31

Zitat von »"Nox"«


Vorallem die Größenangaben.


Sollte aufs gleiche rauskommen.
@D13_Dreinig

Werbeanzeige