JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=20e68587284818bb20ee6a6c5922114dMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Binärdateien

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
derUnwissende
Mini JLI'ler



Anmeldedatum: 14.11.2002
Beiträge: 32

Medaillen: Keine

BeitragVerfasst am: 14.11.2002, 20:24    Titel: Binärdateien Antworten mit Zitat

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 Confused )

wäre net wenn mir jemand helfen könnte
danke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 15.11.2002, 00:39    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
derUnwissende
Mini JLI'ler



Anmeldedatum: 14.11.2002
Beiträge: 32

Medaillen: Keine

BeitragVerfasst am: 21.11.2002, 16:22    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Starwash
Senior JLI'ler


Alter: 39
Anmeldedatum: 22.09.2002
Beiträge: 252
Wohnort: Zossen (bei Berlin)
Medaillen: Keine

BeitragVerfasst am: 22.11.2002, 21:49    Titel: Antworten mit Zitat

Hi,
frag doch mal ab, ob die Datei überhaupt geladen wurde Wink
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
derUnwissende
Mini JLI'ler



Anmeldedatum: 14.11.2002
Beiträge: 32

Medaillen: Keine

BeitragVerfasst am: 24.11.2002, 15:44    Titel: Antworten mit Zitat

also der läd die schon, habs damit ma ausprobiert
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
derUnwissende
Mini JLI'ler



Anmeldedatum: 14.11.2002
Beiträge: 32

Medaillen: Keine

BeitragVerfasst am: 25.11.2002, 20:57    Titel: Antworten mit Zitat

bitte bitte sag mir einer, dass da ein total dummer fehler ist, den ihr alle übersehen habt, weil der so billig war
BITTE BITTE Crying or Very sad

sowas kommt schließlich öfter bei mir vor Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 25.11.2002, 21:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
derUnwissende
Mini JLI'ler



Anmeldedatum: 14.11.2002
Beiträge: 32

Medaillen: Keine

BeitragVerfasst am: 26.11.2002, 13:04    Titel: Antworten mit Zitat

Embarassed
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
Benutzer-Profile anzeigen Private Nachricht senden
Jörg
JLI MVP
JLI MVP



Anmeldedatum: 19.07.2002
Beiträge: 182
Wohnort: Siegen/NRW
Medaillen: Keine

BeitragVerfasst am: 26.11.2002, 13:29    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
derUnwissende
Mini JLI'ler



Anmeldedatum: 14.11.2002
Beiträge: 32

Medaillen: Keine

BeitragVerfasst am: 26.11.2002, 14:21    Titel: Antworten mit Zitat

ok danke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum