Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Mapin tallennus / lataus

Taikaviitta [03.08.2008 19:19:47]

#

Teen sen näin:

FILE* fp = fopen("test1.dmm", "wb");
  fwrite(&tile,  1, sizeof(tile), fp);
  fwrite(&bg   , 1, sizeof(bg), fp);
  fwrite(&fg   , 1, sizeof(fg), fp);
  fwrite(&acid,  1, sizeof(acid), fp);
  fwrite(&enemy, 1, sizeof(enemy), fp);

Ja loadissa sama mutta "rb" ja fread.

int tile[300*200];
int fg[300*200];
int bg[300*200];
bool acid[300*200];
int enemy[150*100];

Ongelmana on, että mappi ei lataudu kokonaan. w00t?

Mod. lisäsi kooditagit

Janezki [03.08.2008 20:00:02]

#

Minulla ei ole mitään tietoa C/C++:n sielunelämästä, mutta ainakin Delphillä tiedostoon kirjoittamisessa ja sieltä lukemisessa on 256 merkin bufferi, eli sitä enempää ei saa luettua, saati kirjoitettua. Ratkaisin ongelman TKE-projektissani kirjoittamalla 256 merkin könttiä, jotka erotetaan asciimerkillä 254 toisistaan.

User137 [03.08.2008 20:29:57]

#

Janezki kirjoitti:

Minulla ei ole mitään tietoa C/C++:n sielunelämästä, mutta ainakin Delphillä tiedostoon kirjoittamisessa ja sieltä lukemisessa on 256 merkin bufferi, eli sitä enempää ei saa luettua, saati kirjoitettua. Ratkaisin ongelman TKE-projektissani kirjoittamalla 256 merkin könttiä, jotka erotetaan asciimerkillä 254 toisistaan.

Suosittelen tutustumaan TFileStream luokkaan :) Sillä voit mm. avata tiedoston ja muokata sitä keskeltä mistä kohtaa tahansa ja erittäin tehokkaasti, käytin sitä tuossa putkaposti kilpailussa.
Read() käskyllä voi lukea muutakin kuin merkkejä tai stringejä joita tuollainen rajoitus saattaa pelkästään koskea. Esim suoraan jonkun record tyypin voi kirjoittaa tiedostoon sellaisenaan ja lukea sen.

Janezki [03.08.2008 20:36:55]

#

User137 kirjoitti:

Suosittelen tutustumaan TFileStream luokkaan :) Sillä voit mm. avata tiedoston ja muokata sitä keskeltä mistä kohtaa tahansa ja erittäin tehokkaasti, käytin sitä tuossa putkaposti kilpailussa.

Nojoo, on minulla noita sivistysaukkoja ohjelmointitaidoissa. Oletin kuitenkin kustomoidun kirjoitustavan olevan paras, ottaen huomioon kryptaus, lokiin kirjoittamisen sekä suuret taulukot.

Metabolix [04.08.2008 12:32:20]

#

Koodissasi ei kuulu käyttää &-merkkejä, koska taulukon nimi on jo itsessään osoitin.
taulu == &taulu[0], mutta &taulu on taas jotain aivan muuta, jota et tuossa missään nimessä kaipaa.

Janezki: Suosittelen binaarimuotoista tallennusta. Enpä ole itse tuollaisiin rajoituksiin törmännyt edes tekstimuotoisen datan kanssa...

Janezki [04.08.2008 13:56:28]

#

Metabolix kirjoitti:

Janezki: Suosittelen binaarimuotoista tallennusta. Enpä ole itse tuollaisiin rajoituksiin törmännyt edes tekstimuotoisen datan kanssa...

Kokeilin binaarimuotoista, mutta siinäkin vasta tulikin ongelmia. Tosin binääri voisi nyt toimia paremmin kun sain könttisysteemini toimimaan.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta