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 :

pchar* et const pchar*


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut pchar* et const pchar*
    Bonjour,

    Avant tout je précise que je suis débutant en C++.
    L'objectif des quelques lignes suivantes étaitent de me familiariser avec le passage de paramètres "pchar*" et "const pchar*

    Je travaille sous Borland Turbo C++ 6 - version personnelle.

    Voici mon code :
    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
     
    void   TForm1::procedure1(char *P1)
    {
    	P1 = StrLCat(P1," ET ça aussi",StrLen(P1)+12);
    }
     
    void   TForm1::procedure2(const char *P1)
    {
    	P1 = "A La PLACE DE....";
    }
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    	char *Chaine;
     
    	Chaine = "Valeur 1";
    	procedure1 (Chaine);
    	Memo1->Lines->Add(Chaine);    
     
    	Chaine = "Valeur 2";
    	procedure2 (Chaine);
    	Memo1->Lines->Add(Chaine);    //ET ça aussi
    }
    Ce que j'esperai :
    Affichage dans le mémo de
    - Valeur 1 ET ça aussi
    - Valeur 2

    Ce que j'ai obtenu :
    - Valeur 1 ET ça aussi
    - ET ça aussi

    Et là je ne comprends pas pourquoi ma Seconde ligne n'est pas "Valeur 2"
    Et encore pire : lorsque j'évalue "chaine"
    aprés l'execution de Chaine = "Valeur 2"
    l'evaluateur me retourne "ET ça aussi"...

    Et là ce sont toutes mes coyances en informatiques qui s'écroulent ....

    Merci pour votre aide, je suis certains d'être passé à coté d'un truc gros comme une baleine .... mais là je ne vois pas ....

    David

  2. #2
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Salut, je ne suis pas un expert de Borland Turbo C++ 6, mais je ne comprend pas pourquoi ceci fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	char *Chaine;
     
    	Chaine = "Valeur 1";
    Il n'y a jamais d'espace mémoire d'allouer pour Chaine, seul le pointeur existe et il pointe vers rien!

    Si tu veux allouer une taille fixe il faut faire:
    Sinon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	unsigned int Size = 1024;
    	char *Chaine= new char[Size];
    	// ...
    	delete[] Chaine;
    Tu peux aussi utiliser malloc, calloc, etc...

Discussions similaires

  1. DLL : récupérer des string/PChar...
    Par the_magik_mushroom dans le forum Langage
    Réponses: 8
    Dernier message: 10/11/2005, 10h58
  2. [FreePascal] Convertir AnsiString en PChar
    Par Nomiss dans le forum Free Pascal
    Réponses: 1
    Dernier message: 25/10/2005, 21h10
  3. Paramètre Pchar dans une DLL
    Par Writer dans le forum Langage
    Réponses: 4
    Dernier message: 25/08/2005, 01h33
  4. [D7] Besoin d'aide sur un PChar
    Par bobby-b dans le forum Langage
    Réponses: 6
    Dernier message: 30/06/2004, 16h42
  5. [transtypage]PChar et WideString
    Par rbag dans le forum Bases de données
    Réponses: 2
    Dernier message: 05/09/2002, 20h12

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