Just nu i M3-nätverket
Jump to content

Skriva till viss position i fil?


LiveNdie

Recommended Posts

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();

 

}

Link to comment
Share on other sites

 

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

 

 

 

 

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...