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

16.12.2006, 19:09

Keine ahnung von nichts! Brauche hilfe! Bitte nicht schlagen

Hallo!
Ich komm einfach nicht weiter!
Das ist hier zum Beispiel mal ein Ausschnitt von einer Modeldatei (Milkshape). Hier stehen ja eigentlich Zahlen drin.

Quellcode

1
MS3D000000   (    ØÀ  è@  à@   ØÀ  ØÀ  à@   à@  è@  à@   à@  ØÀ  à@   B  è@  à@   B ØÀ  à@   B  è@  àÀ   B  ØÀ  àÀ   à@  è@  àÀ   à@  ØÀ  àÀ   ØÀ  è@  àÀ   ØÀ  ØÀ  àÀ    è@  àÀ    ØÀ  àÀ    è@  à@    ØÀ  à@   ØÀ ÚA  àÀ    ØÀ ÚA  à@    à@ ÚA  àÀ    à@ ÚA  à@    ØÀ  cÂ...


Wie kann ich selber so eine Datei schreiben? (also nicht in klar text)
Mit header und so.

Gruß Flo

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

16.12.2006, 19:32

zuerst solltest du wissen wie man mit dateien umgeht...
das geht unter C/C++ z.B. mit fopen() und seinen kumpels von der c libary, oder den stream klassen der STL oder einer anderen bibliothek deiner wahl (z.b. WinAPI usw., für file I/O gibts vermutlich 200k+ möglichkeiten...)

dann ist alles was du brauchst das ;)

3

16.12.2006, 19:39

mir geht es nicht drum wie ich ein Milkshape model lade ;)
Ich würde gerne wissen wie ich selber so eine codierte Datei schreibe.
Wie kann ich ein header in die datei schreiben, eine Versions nummer, ein paar zahlen, ein paar Variable. :?
Gruß Flo

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

16.12.2006, 19:41

wie bereits gesagt: fopen(), fread(), fwrite(), fclose(),...

5

16.12.2006, 19:44

also bei mir kann man das dann immer noch sehr gut lesen.
Einfach doppelklick und siehe da ein text!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

16.12.2006, 19:47

es wär vermutlich hilfreich die datei im binärmodus zu öffnen...

http://www.google.at/search?hl=de&q=c%2B%2B+file+io+tutorial&btnG=Suche&meta=

http://www.cplusplus.com/doc/tutorial/files.html
http://www.cprogramming.com/tutorial/lesson10.html
http://www.eng.cam.ac.uk/help/tpl/languages/C++/io.html
.
.
.

http://www.google.at/search?hl=de&q=c+file+io+tutorial&btnG=Google-Suche&meta=

http://www.cprogramming.com/tutorial/cfileio.html
.
.
.

und lass dich niemals von packing und alignment kriegen ;)

7

16.12.2006, 20:21

:( :(
Ich glaub ich versteh da irgendwas nicht!
In allen beispielen konnte man anschließend die datei lesen! Also waren da wieder Buchstaben drin. und nicht ØÀ àÀ  è@ à@  ØÀ à@ sondern z.b. ABCDEFGHIJKLMNO...
was sind das für zeichen?
was haben die zu bedeuten?
warum wird das was dahinter steckt nicht angezeigt sondern nur diese Zeichen!
Ich verblöde hier völlig! Bitte helft mir :?
Gruß Flo

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

16.12.2006, 20:35

wenn du eine variable vom typ int mit dem inhalt 1145258561 (0x44434241) binär in eine datei schreibst, dann kommt folgendes raus:

ABCD

weil, in der datei einfach nur die 4 bytes der zahl stehen und diese, wenn du die datei mit notepad öffnest, als buchstabencodes interpretiert werden...

machst du die datei in einem hex editor auf, dann steht dort:

41 42 43 44

warum verkehrt?
weil dein pc mit little endian arbeitet ;)

9

16.12.2006, 20:43

Also erstmal stellt sich die Frage was du eigentlich gemacht hast ^^

Da du dir die Dateien nicht wirklich ansehen kannst vermute ich mal das du sie mit einem Texteditor wie z.B. Notepad angesehen hast. Bei einem Texteditor handelt es sich ja auch wieder um ein Programm (wie das welches du schreiben willst) das eine Datei einliest, die eingelesenen Daten interpretiert und sie grafisch ausgibt.
In diesem Fall werden immer Blöcke mit 8 Bit länge (oder 16 bei Unicode) gelesen diese als zeichen interpretiert und ausgegeben. Wenn du also in deinemProgramm ein Zeichen speicherst wird es ein Texteditor genauso wiedergeben können. Bei Zahlen verhällt sich das anderst. Z.B. hat der Datentyp long 32 Bit und wenn du den mit einem Texteditor ausliest werden daraus 4 zeichen mit je 8 Bit länge. Die Zeichen kommen aus dem Zeichensatz den du verwendest. Es sind sogenannt Sonderzeichen. Beim Speichern der Zahlen kommen numal 4 Textzeichen raus. Das können Buchstaben sein, Zahlen, diese Zeichen oder auch ein zeilenumbruch usw..


EDIT: dot war wohl schneller

10

16.12.2006, 21:10

ASO!!!!
Jetzt wird einiges klar!
Doch wie kann ich eine long variable abspeichern (erlaubt mir bitte diese dämliche frage!).
So geht es auf jedenfall nicht:

C-/C++-Quelltext

1
2
3
4
5
long zahl=5;
fstream f;
f.open(filename, ios::out|ios::binary);
f.write((char *)zahl, sizeof(zahl));
f.close();

Da schmiert das programm ab!

Werbeanzeige