Bonjour,

J'essaie de construire un fichier binaire avec une structure. C'est un essai.

Lors de l'ouverture, j'ai comme message d'erreur : "Abnormal program termination"

Curieusement, si je retire la ligne ListBox2->Items->Add(personnes.nom + " " + personnes.ville+ " " +IntToStr(personnes.num) );
Pas de message d'erreur.

J'aimerais utiliser mon fichier de façon classique :
- Enregistrer
- Modifier (avec Fseek ?)
- Supprimer (avec Fseek ?)

Je cherche des solutions sur le net, pas moyen ... et je rame

Ci-dessous mon code.

Si vous avez une solution, merci d'avance.

Cordialement

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
struct PERSONNE
 {
  String nom;
  String ville;
  int num;
 };
 PERSONNE personnes;
 int pos;
 
void __fastcall TForm2::EnregistrerStructClick(TObject *Sender)
{
   // Ecriture
 
  int i;
 
  ofstream fichier ("Repertoire.xyz", ios::out | ios :: app);
 
 
  if(!fichier.is_open())
 
	 {
	  ShowMessage ("Impossible de créer le fichier");
	  return;
	 }
 
  else
	{
	  personnes.nom = Edit2->Text;
	  personnes.ville = Edit3->Text;
	  personnes.num = pos;
	  pos+=1;
	  fichier.write ((char *)&personnes, sizeof(PERSONNE));
	}
 
	fichier.close();
}
 
void __fastcall TForm2::OuvertureStructClick(TObject *Sender)
{
 ListBox2->Clear();
  int i;
 
 ifstream fichier ("Repertoire.xyz", ios::in );
 
 
 if (!fichier.is_open())
 
	 {
	  ShowMessage ("Impossible d'ouvrir le fichier");
	  return;
	 }
  else
 
   {  while (!fichier.eof())
	 {
	  fichier.read ((char *)&personnes, sizeof(PERSONNE));
	  ListBox2->Items->Add(personnes.nom + " " + personnes.ville+ " " +IntToStr(personnes.num) );
	 }
   }
 
  fichier.close();
 
 }