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

  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;
    }

  7. #7
    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
    pourquoi r�inventer la roue !!
    La solution la plus simple est une base de donn�e sous fichier texte tel que donn�e
    dans le site fourni tu trouvera de nombreux exemples pour r�soudre simplement ton probl�me.
    en utilisant au d�part une TStringList, Une classe maison pour les donn�es que tu veux utiliser, la validation des donn�es,la lecture et l'�criture sur le disque, pour finir par un composant tr�s puissant de la VCL TDataSet.
    Lis et utilise ces diff�rents tutoriaux et tu deviendras un crack dans ce domaine.

    toujours 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

  8. #8
    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

    Je partage ton point de vue.

    C'est vrai que builder fournit des outils puissants.

    Je me focalise trop sur la programmation"classique"

    Bien cordialement

  9. #9
    Membre exp�riment�
    Homme Profil pro
    D�veloppeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    277
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : D�veloppeur multiplateformes
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 277
    Par d�faut
    L'utilisation de XML � partir d'une base Delphi est coh�rent. En g�n�ral les outils issus de Delphi ont l'avantage d'une tr�s grande simplicit� d'utilisation tout en �tant robustes.
    Mais n'h�sitez pas non plus � d�couvrir progressivement les autres aspects "pur C++" qui pourront vous �tre fort utiles voir indispensables � l'avenir, tout l'arsenal de la STL notamment.

  10. #10
    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
    Tout � fait yvsmls.
    J'ai deux livres pas mal de Claude Delannoy : Programmer en langage C++ et Exercices en langage C++
    Je trouve qu'il est plus facile d'�tudier sur un livre qu'un �cran.
    Contrairement � Delphi (il y a plusieurs ann�es), je n'ai pas trouv� de bouquins sur Builder et fmx.
    Cordialement

  11. #11
    Membre exp�riment�
    Homme Profil pro
    D�veloppeur multiplateformes
    Inscrit en
    Mars 2003
    Messages
    277
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : D�veloppeur multiplateformes
    Secteur : High Tech - Multim�dia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 277
    Par d�faut
    Il y a eu des livres sur Builder � la fin des ann�es 90, notamment celui de G�rard Leblanc, aujourd'hui �videmment �puis� et qui ne serait de toute fa�on plus d'actualit�.
    Il y a encore de tr�s bonnes ressources sur developpez.com dont celles de DjmSoftware.
    En r�gle g�n�rale il y a une forte diminution des livres en informatique concurrenc�s par les formations en ligne, les tutos YouTube de qualit�s tr�s in�gales.
    C'est dommage car l'apprentissage � partir d'un livre est plus long mais beaucoup plus efficient, profond et p�renne.
    C++ � la r�putation d'�tre difficile et dangereux, ce n'est qu'en partie vrai, car bien enseign� de fa�on p�dagogique c'est une excellente �cole permettant d'acqu�rir une tr�s bonne capacit� d�adaptation.
    Builder est de ce point de vue une excellente solution : entre Delphi et C++ il prend le meilleurs des deux mondes en permettant un apprentissage en douceur.
    Tr�s peu connu et utilis� en France, on peu esp�rer que la version communautaire gratuite va contribuer � son d�veloppement, notamment dans l'enseignement et les milieux universitaires.
    Il faut dire aussi qu'Embarcadero traverse une passe difficile en ce moment avec Builder, sans doute du fait de probl�mes de compatibilit�s avec les nouvelles version C++17 et CLANG.
    On peut esp�rer que tout rentre dans l'ordre dans les semaines qui viennent.

  12. #12
    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
    Merci yvslms pour vos renseignements. Cordialement

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