Remplacer des donnees avec ofstream

Résolu
bioopovega Messages postés 22 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 18 août 2009 - 17 févr. 2007 à 20:52
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 18 févr. 2007 à 11:06
Bonjour,

J'ai un probleme avec ofstream, je voudrais modifier des données (en mode binaire), mais soit il me met les données à la fin du fichiers, soit il me l'ecrase. Pouvez vous m'eguiller?

Merci

bioopo

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
18 févr. 2007 à 11:06
HANDLE hfl;
DWORD d;
BYTE buf[8];
// ON REMPLACE 4 OCTETS A L'OFFSET 8 DU FICHIER
hfl = CreateFile(szfname, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
if(hfl == INVALID_HANDLE_VALUE) return;
SetFilePointer(hfl, 8, 0, FILE_BEGIN);
WriteFile(hfl, buf, 4, &d, 0);
CloseHandle(hfl);

Le "standard" est la réduction au plus petit dénominateur commun, une assurance de faire du plus que moyen pour tout le monde.
Décompilez l'exe avec du standard pour y voir les 8 Ko de daube standard dans laquelle le code se ballade avant de finir par force sur l'API.

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 févr. 2007 à 21:03
Ta question est en rubrique Windows, faut-il la déplacer ???

Parce que si c'est bien pour Windows, ces histoires de flux n'ont rien à y faire.
SetFilePointer
ReadFile
WriteFile

ciao...
BruNews, MVP VC++
0
bioopovega Messages postés 22 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 18 août 2009 28
18 févr. 2007 à 00:49
bonjour,


Je l'ai mis dans cette rubrique car c'est la seule qui parlait de fichier, mais si ce n'est pas la bonne, déplacez la.


merci


bioopo
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
18 févr. 2007 à 01:16
Et les flux de fichiers font partie de la librairie standard, compatible linux ET windows. Mais j'avoue que les catégories de ce forum sont mal organisées, par exemple pas de catégorie OpenGL dans Windows...

Sinon, pour remplacer des données, il faut que tu trouve les données à remplacer dans le fichier (en comparant le contenu du fichier à ce que tu dois remplacer), tu place le flux au début des données à déplacer, et tu met à la place ce que tu veut mettre.
Par contre, si les données de remplacement sont plus grandes que les données à remplacer (ou plus petites), il faut déplacer l'ensemble du fichier après ces données.

Il te reste plus qu'a programmer tout ça

<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bioopovega Messages postés 22 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 18 août 2009 28
18 févr. 2007 à 01:41
bonjour et merci pour ta reponse,


Ma logique de conception, c'est celle-ci, mais le probleme vient de
ofstream, qui ne permet pas (ou je n'est pas trouve comment) de faire
cela, du coup, je cree un fichier temporaire avec toutes les nouvelles
données, je modifie mes données à modifié, puis je remplace l'ancien
par le temporaire.


pour l'instant je n'est que cette solution.


bioopo
0
Rejoignez-nous