Just nu i M3-nätverket
Gå till innehåll

Skriva till viss position i fil?


LiveNdie

Rekommendera Poster

Med nedanstående kod vill jag skriva en struktur till en viss plats i en fil, men jag får den inte att skriva på positionen "pos" utan den skriver antingen till början av filen, eller lägger till det till slutet av filen (beroende på om jag använder ios::ate eller ios::app)

 

vad är det som inte stämmer?

 

void __fastcall TScheemForm::SaveButtonClick(TObject *Sender)

{

 

FileSetAttr(WeekFileName, 0);

ofstream outfile(WeekFileName, ios::binary | ios::ate);

if (!outfile){

Application->MessageBox("Problem att Skriva eller Läsa från filen",

"Error", MB_OK);

return;}

 

outfile.seekp(pos);

outfile.write((char*)&CurrentRecord, sizeof(DateRecord));

outfile.close();

 

}

Länk till kommentar
Dela på andra webbplatser

 

seekp(...) ställer skrivpekaren på positionen du anger från positionen du står på just nu.

 

ios::app och ios::ate placerar båda skrivpekaren i slutet av filen. Skilnaden är att ios:ate står kvar på positionen och flyttar sig inte. I fallet ios::app kommer skrivpekaren alltid att peka på slutet i filen.

 

Testa därför:

outfile.seekp(0); // gå till start

outfile.seekp(pos); // gå till pos

 

alt. kan man använda

outfile.seekp(-pos, ios:end); // gå till pos räknat från slutet av filen.

 

Är pos ett giltigt värde?

 

/Thomas

 

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Tack, tror att det mycket väll kan ha varit det som var problemet, men:

Hur ska man göra för att programmet inte ska ta bort allt innehåll när man öppnar filen om man inte ska använda ios::ate eller ios::app då?

 

 

 

 

[inlägget ändrat 2002-03-07 21:37:47 av LiveNdie]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...