 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
derUnwissende Mini JLI'ler
Anmeldedatum: 14.11.2002 Beiträge: 32
Medaillen: Keine
|
Verfasst am: 14.11.2002, 19:24 Titel: Binärdateien |
|
|
Hi,
ich hab ein problem mit den Binärdateien,
und zwar läd der die datei nicht(auch wenn kein fehler kommt)
hier ist der Code:
Code: |
void Save(void)
{
FILE *Datei = fopen("c:\\test.bin","w");
for(int i=0, z=0; i<13; z++)
{
fwrite(&Planquadrat[i][z].x1,sizeof(Planquadrat[i][z].x1), 1, Datei);
fwrite(&Planquadrat[i][z].x2,sizeof(Planquadrat[i][z].x2), 1, Datei);
fwrite(&Planquadrat[i][z].y1,sizeof(Planquadrat[i][z].y1), 1, Datei);
fwrite(&Planquadrat[i][z].y2,sizeof(Planquadrat[i][z].y2), 1, Datei);
fwrite(&Planquadrat[i][z].enabled,sizeof(Planquadrat[i][z].enabled), 1, Datei);
fwrite(&Planquadrat[i][z].befahrbar,sizeof(Planquadrat[i][z].befahrbar), 1, Datei);
fwrite(&Planquadrat[i][z].unbefahrbar,sizeof(Planquadrat[i][z].unbefahrbar), 1, Datei);
fwrite(&Planquadrat[i][z].ziel,sizeof(Planquadrat[i][z].ziel), 1, Datei);
fwrite(&Planquadrat[i][z].start,sizeof(Planquadrat[i][z].start), 1, Datei);
if(z>=12)
{
z=-1;
i++;
}
}
fclose(Datei);
MessageBox(0, "gespeichert","fertig",MB_OK);
}
void Load(HWND hwnd)
{
FILE *Datei = fopen("c:\\test.bin", "r");
for(int i=12, z=12; i>=0; z--)
{
fread(&Planquadrat[i][z].start,sizeof(Planquadrat[i][z].start), 1, Datei);
fread(&Planquadrat[i][z].ziel,sizeof(Planquadrat[i][z].ziel), 1, Datei);
fread(&Planquadrat[i][z].unbefahrbar,sizeof(Planquadrat[i][z].unbefahrbar), 1, Datei);
fread(&Planquadrat[i][z].befahrbar,sizeof(Planquadrat[i][z].befahrbar), 1, Datei);
fread(&Planquadrat[i][z].enabled,sizeof(Planquadrat[i][z].enabled), 1, Datei);
fread(&Planquadrat[i][z].y2,sizeof(Planquadrat[i][z].y2), 1, Datei);
fread(&Planquadrat[i][z].y1,sizeof(Planquadrat[i][z].y1), 1, Datei);
fread(&Planquadrat[i][z].x2,sizeof(Planquadrat[i][z].x2), 1, Datei);
fread(&Planquadrat[i][z].x1,sizeof(Planquadrat[i][z].x1), 1, Datei);
if(z<=0)
{
z=13;
i--;
}
}
fclose(Datei);
MessageBox(0, "geladen","fertig",MB_OK);
InvalidateRect(hwnd, 0, FALSE);
}
|
also beide Funktionen werden durch einen Mausklick aufgerufen(die MessageBox kommt jeweils, und eine datei wird auch erstellt nur halt eben beim laden )
wäre net wenn mir jemand helfen könnte
danke |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 14.11.2002, 23:39 Titel: |
|
|
Hallo,
versuche mal zuerst die Datei auch binär zu öffnen:
FILE *Datei = fopen("c:\\test.bin","wb");
und beim Lesen auch "rb". Gehts? |
|
Nach oben |
|
 |
derUnwissende Mini JLI'ler
Anmeldedatum: 14.11.2002 Beiträge: 32
Medaillen: Keine
|
Verfasst am: 21.11.2002, 15:22 Titel: |
|
|
hi,
mein modem war kurzzeitug außer betrieb.
danke für den tipp, aber es geht leider immer noch nicht.
Nach der Load Funktion wird nur das Fenster neu gezeichnet und bei allen Planquadraten wird enabled auf false gesetzt(obwohl sie true abgespeichert wurden) |
|
Nach oben |
|
 |
Starwash Senior JLI'ler
Alter: 40 Anmeldedatum: 22.09.2002 Beiträge: 252 Wohnort: Zossen (bei Berlin) Medaillen: Keine
|
Verfasst am: 22.11.2002, 20:49 Titel: |
|
|
Hi,
frag doch mal ab, ob die Datei überhaupt geladen wurde
Das machst du folgendermaßen
Code: |
FILE* fDatei = fopen("bla.bin","rb");
if(fDatei != NULL){
...
fclose(fDatei);
}
|
Wichtig: Das fclose(FILE*) mit in die if Abfrage nehmen, da es zu Fehlern führen kann, wenn fclose aufgerufen wird obwohl FILE* noch auf NULL zeigt.
Gruss Tarek |
|
Nach oben |
|
 |
derUnwissende Mini JLI'ler
Anmeldedatum: 14.11.2002 Beiträge: 32
Medaillen: Keine
|
Verfasst am: 24.11.2002, 14:44 Titel: |
|
|
also der läd die schon, habs damit ma ausprobiert |
|
Nach oben |
|
 |
derUnwissende Mini JLI'ler
Anmeldedatum: 14.11.2002 Beiträge: 32
Medaillen: Keine
|
Verfasst am: 25.11.2002, 19:57 Titel: |
|
|
bitte bitte sag mir einer, dass da ein total dummer fehler ist, den ihr alle übersehen habt, weil der so billig war
BITTE BITTE
sowas kommt schließlich öfter bei mir vor  |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 25.11.2002, 20:48 Titel: |
|
|
Du musst die Daten in der Reihenfolge einlesen, wie du sie auch reinschreibst.
Du kannst nicht erst "foo" reinschreiben und dann beim Laden den Wert als "bar" wieder einlesen. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
derUnwissende Mini JLI'ler
Anmeldedatum: 14.11.2002 Beiträge: 32
Medaillen: Keine
|
Verfasst am: 26.11.2002, 12:04 Titel: |
|
|
irgendwie hatte ich das noch so im kopf naja
noch ne frage, ich wollte gerne ne MessagBox machen, bei der man dann zwischen OK und Abbrechen aussuchen, aber wie werte das hinterher aus, oder geht das mit einer normalen MessageBox?
Und gibt es in C++ auch so eine Art InfoBox? in der ein Eingabefeld ist? |
|
Nach oben |
|
 |
Jörg JLI MVP


Anmeldedatum: 19.07.2002 Beiträge: 182 Wohnort: Siegen/NRW Medaillen: Keine
|
Verfasst am: 26.11.2002, 12:29 Titel: |
|
|
das mit der messagebox geht so:
Code: | if (MessageBox(hWnd,"text","caption",MB_OKCANCEL) == IDOK)
{
//ok gedrueckt
}
else
{
//cancel gedrueckt
} |
Weitere Informationen stehen in der MSDN. Ne Inputbox gibts unter vc++ soweit ich weiß nicht. Du musst dir selber eine basteln. _________________ www.messiahzone.de.vu |
|
Nach oben |
|
 |
derUnwissende Mini JLI'ler
Anmeldedatum: 14.11.2002 Beiträge: 32
Medaillen: Keine
|
Verfasst am: 26.11.2002, 13:21 Titel: |
|
|
ok danke |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|