IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Ficher avec TStream et Structure c++ builder fmx


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    132
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 132
    Par d�faut Ficher avec TStream et Structure c++ builder fmx
    Bonjour,

    Le code ci-dessous avec TStream fonctionne bien.

    Le probl�me est qu'il affiche les donn�es � la suite sur la ListBox
    Dupont
    Paris
    Martin
    Lille
    et non de cette fa�on (par enregistrement) :
    Dupont Paris
    Martin Lille
    � moins de faire de cette fa�on :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    writer->WriteLine(personnes.nom + " " + personnes.ville + " " + personnes.num);
    Pas terrible et comment modifier par exemple la variable personnes.ville ou supprimer un enregistrement ?

    Je cherche avec seek. Si vous avez une id�e ...

    Merci d'avance.

    Cordialement.

    Exemples Embarcadero :

    http://docwiki.embarcadero.com/CodeE...ample#mw-pages

    StreamAdvancedRdWr
    StreamCharRdWr
    StreamStrRdWr



    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
     
    struct PERSONNE
     {
      AnsiString nom;
      AnsiString ville;
      int num;
     };
     PERSONNE personnes;
     int pos;
     
    void __fastcall TForm2::WriterStructClick(TObject *Sender)
    {
       TStreamWriter* writer;
     
      /* Creation écriture */
    	writer = new TStreamWriter("local.txt", ios::out | ios :: app);   //   ios :: app pour ajouter des enregistrements
     
    	/* ajouter des données */
          personnes.nom = Edit2->Text;
    	  personnes.ville = Edit3->Text;
    	  personnes.num = pos;
    	  pos+=1;
    	writer->WriteLine(personnes.nom);
    	writer->WriteLine(personnes.ville);
    	writer->WriteLine(personnes.num);
     
    	/* fermer */
    	delete writer;
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm2::ReaderStructClick(TObject *Sender)
    {
     ListBox2->Clear();
      TStreamReader* reader;
      /* création lexture */
    	reader = new TStreamReader("local.txt", ios::in);
    	while (reader->Peek() >= 0)
     
     {
       ListBox2->Items->Add(reader->ReadLine());
     }
     
     
     // fermer
      delete reader;
     
    }

  2. #2
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    132
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 132
    Par d�faut
    C'est int personnes.num qui emp�chait un affichage correct. Ou alors transformer int en string pour le fichier

    Cette fois, �a marche ...

    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
     
    void __fastcall TForm2::WriterStructClick(TObject *Sender)
    {
       TStreamWriter* writer;
     
      /* Creation écriture */
    	writer = new TStreamWriter("local.txt", ios::out | ios :: app);   //   ios :: app pour ajouter des enregistrements
     
    	/* ajouter des données */
    	  personnes.nom = Edit2->Text;
    	  personnes.ville = Edit3->Text;
    	writer->WriteLine(personnes.nom);
    	writer->WriteLine(personnes.ville);
     
    	/* fermer */
    	delete writer;
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm2::ReaderStructClick(TObject *Sender)
    {
     ListBox2->Clear();
      TStreamReader* reader;
      /* création lexture */
    	reader = new TStreamReader("local.txt", ios::in);
    	while (reader->Peek() >= 0)
     
     {
       personnes.nom = reader->ReadLine();
       personnes.ville = reader->ReadLine();
       ListBox2->Items->Add(personnes.nom +"  "+ personnes.ville);
     }
     
     
     // fermer
      delete reader;
     
    }

  3. #3
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    Salut
    tu ne peux pas employer un Type structur� pour ce genre d'op�ration
    une structure a toujours une taille fixe
    la solution simple est d'utiliser soit un format XML
    soit une structure du type
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    struct PERSONNE
     {
      char nom[80];
      char ville[50];
      int num;
     };
    cordialement
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  4. #4
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    132
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 132
    Par d�faut
    Salut et merci

    Je ne me suis pas encore pench� sur le XML avec builder.

    Avec les char, j'ai comme erreur "Addition de pointeur incorrecte"
    sur ces lignes :

    personnes.nom = Edit2->Text;
    personnes.ville = Edit3->Text;
    personnes.nom = reader->ReadLine();
    personnes.ville = reader->ReadLine();

    Je peux limiter les string avec Edit2->MaxLength = 30;

    Par contre, j'ai converti pos en cha�ne et �a marche.

    Je vais chercher comment supprimer et modifier un enregistrement. J'aurai peut-�tre besoin de ton aide.

    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
     
    void __fastcall TForm2::WriterStructClick(TObject *Sender)
    {
      AnsiString possup;
     
      Edit2->MaxLength = 30;
      Edit3->MaxLength = 30;
     
       TStreamWriter* writer;
     
      /* Creation écriture */
    	writer = new TStreamWriter("local.txt", ios::out | ios :: app);   //   ios :: app pour ajouter des enregistrements
     
    	/* ajouter des données */
              personnes.nom = Edit2->Text;
    	  personnes.ville = Edit3->Text;
    	  possup = IntToStr(pos); // convertit pos en chaîne
    	  personnes.num = possup;
    	  pos+=1;
     
    	writer->WriteLine(personnes.nom);
    	writer->WriteLine(personnes.ville);
    	writer->WriteLine(personnes.num);
     
    	/* fermer */
    	delete writer;
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm2::ReaderStructClick(TObject *Sender)
    {
     ListBox2->Clear();
      TStreamReader* reader;
      /* création lexture */
    	reader = new TStreamReader("local.txt", ios::in);
    	while (reader->Peek() >= 0)
     
     {
       personnes.nom = reader->ReadLine();
       personnes.ville = reader->ReadLine();
       personnes.num = reader->ReadLine();
       ListBox2->Items->Add(personnes.nom +"  "+ personnes.ville +"  " + personnes.num);
     }
     
     
     // fermer
      delete reader;
     
    }

  5. #5
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Responsable de compte
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par d�faut
    Salut
    ci joint un exemple de base de donn�es en format XML
    tu pourra voir ainsi la m�thode utilis�e.
    je te joins �galement un lien vers le tutoriel correspondant en anglais
    http://www.festra.com/cb/xmldb01.htm
    http://www.festra.com/cb/xmldb02.htm
    cordialement
    Fichiers attach�s Fichiers attach�s
    vous trouverez mes tutoriels � l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les r�gles du forum

  6. #6
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    132
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 132
    Par d�faut
    Salut et merci.

    Notamment pour le fichier zip.

    J'essaye de trouver un exemple simple : le classique r�pertoire pour comprendre le m�canisme des fichiers c++ builder.

    Enregistrer nouveau nom
    Modifier un enregistrement (avec un choix dans un ListBox par exemple)
    Supprimer un enregistrement

    Pour ensuite r��crire le fichier si suppression

    Je ne trouve rien � ce sujet sur le net. Ou alors un exemple comme ci-dessous qui cherche des entiers et non les enregistrements (nom, ville ...)

    J'ai deux livres c++ de Claude Delannoy, idem.

    Cordialement

    En c++ builder (aide embarcadero)

    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
     
    void __fastcall TForm2::SeekClick(TObject *Sender)
    {
     
    	TStreamReader* reader;
    	TCharArray buffer;
     
    	/* Create a reader */
    	reader = new TStreamReader("local.txt");
     
    	/* Prepare a buffer */
    	 buffer.set_length(8);
     
    	/* Read first 5 characters */
    	if (reader->ReadBlock(buffer, 0, buffer.Length) < buffer.Length)
    		ShowMessage("ok");
     
     
    	/* And now, seek the stream back by 5 characters */
    	int byteCount = reader->CurrentEncoding->GetByteCount(buffer);
    	reader->BaseStream->Seek(-1 * byteCount, soFromCurrent);
     
    	 personnes.nom = reader->ReadLine();
    	 Edit3->Text = personnes.nom;
    	 Edit2->Text = buffer.get_length();
     
    	/* Efface toutes les données mises en mémoire tampon.  */
    	reader->DiscardBufferedData();
     
    	delete reader;
    }

Discussions similaires

  1. Probleme avec les composant socket de builder
    Par lol733 dans le forum C++Builder
    R�ponses: 4
    Dernier message: 07/10/2006, 12h22
  2. Petit prob avec l'OLE EXCELL sous builder
    Par vladi dans le forum C++Builder
    R�ponses: 2
    Dernier message: 10/03/2005, 19h30
  3. Problème avec GLUT sous borland c++ builder X
    Par hiko-seijuro dans le forum GLUT
    R�ponses: 1
    Dernier message: 04/11/2004, 12h47
  4. probleme avec pointeurs de structures
    Par remi77 dans le forum C
    R�ponses: 2
    Dernier message: 20/10/2003, 13h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo