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

 Delphi Discussion :

Conversion Tstring string !?


Sujet :

Delphi

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 222
    Points : 401
    Points
    401
    Par défaut Conversion Tstring string !?
    Bonjour,

    je commence depuis peu delphi et j ai une question surement toute bete ^^'.

    apparement la différence entre un tstring et un string c est que tstring est une classe abstraite et string un type de variable?

    le truc c est que mon code tout bete ne fonctionne pas (ma variante du hello word .p)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
    R:='toto'
    Form1.Memo1.Lines:=R;
    end;
    voici les messages d erreur obtenu lorsque je tente de modifier la valeur de l'objet texte memo1.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [Erreur] Unit1.pas(43): Types incompatibles : 'TStrings' et 'String'
    [Erreur] Unit1.pas(18): Déclaration forward ou external non satisfaite : 'TForm1.FormCreate'
    [Erreur] Unit1.pas(20): Déclaration forward ou external non satisfaite : 'TForm1.Memo1Change'
    [Erreur fatale] Project1.dpr(7): Ne peut compiler l'unité utilisée 'Unit1.pas'

    Ce que je comprend pas c'est pourquoi dans les propriétés de l'objet Memo1 la catégorie Lines est du type Tstring et non tout simplement string :/

    En plus comme vous pouvez le constaté j'ai tenté d'implémenter ma variable R en tstring.
    enfin bref jme mélange un peu les pinceaux, un an en travaillant sur un langage non objet ma fais perdre pas mal de notion .

    EDIT : Delphi 5.0

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 222
    Points : 401
    Points
    401
    Par défaut
    bon ducoup j'ai remplacer la zone de texte "Memo" par une zone de texte "Edit" ça fonctionne mais c'est pas se que je voulais ^^.

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Tu ne peux pas directement utiliser un TStrings

    Je te montre un exemple simple avec un mémo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      R : String;
    begin
     R := 'toto'
     // Pas besoin du Form1 si tu es dans la même form pour le code
     Memo1.Lines.Add(R);
    end;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Salut

    Alors ... String et TStrings sont des types de variables, mais ne sont pas du tout équivalentes. String est une chaine de caractere, alors que TStrings est une classe qui se comporte comme un tableau dynamique de string. Donc en gros, c'est un tableau dont chaque "case" contient une chaine de caractere.

    Il faut aussi savoir qu'il ne faut pas utiliser le type TStrings pour déclarer une variable, il vaut mieux utiliser un de ces descendants comme TStringList.

    Mais bien sur, il existe des moyens de convertir l'un en l'autre.
    Voici quelques exemples :
    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
    var
      S : String;
      SL : TStringList;
    ...
    SL:=TStringList.Create;
    SL.Add('Ligne 0');    //remplissage de la liste
    SL.Add('Ligne 1');
    SL.Add('Ligne 2');
     
    ShowMessage(SL[1]);  //Affiche "Ligne 1"
     
    ShowMessage(SL.Text);     //Affiche "Ligne 1", "Ligne 2" et "Ligne 3" séparés par des retours a la ligne (#13#10)
    ShowMessage(SL.CommaText);     //Affiche "Ligne 1", "Ligne 2" et "Ligne 3" séparés par des virgules, et des guillemets
     
    SL.Free;   //Ne pas oublier de liberer l'objet si c'est toi qui le crées.
    Tu peux affecter un string a une StringList avec :
    Dans le cas ou tu utilises un composant comme le mémo, tu peux directement faire :
    Voila, si t'as besoin de plus d'infos, n'hesite pas a faire F1 sur le type que tu ne connais pas.

    Bonne chance !

    Mick605

    Edit : grillé

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 222
    Points : 401
    Points
    401
    Par défaut
    Merci pour les infos.

    donc Tstring c'est un "tableau" de string qui est délimité par les retours chariot.
    ok je comprend mieux, d’ailleurs en fessant le code de Rayek le memo indique "salut <saut de ligne> toto" (il était initialiser par salut)

    contrairement à
    qui lui remplace le contenu de l'objet memo.
    J'avais presque fais un truc dans le genre au début sauf que j'avais rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1.Memo1.Text:='toto';
    ce qui ne fonctionnai pas.


    Merci en tout cas, je commence delphi 5. (les joie de l'entreprise :p) mais ça ma l'air vraiment sympa.

    D’ailleurs j'ai l’impression que ça ressemble un peu à python (ou inversement).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion byte [] -> String
    Par MiJack dans le forum Langage
    Réponses: 3
    Dernier message: 20/10/2005, 18h16
  2. [C#] Conversion System.String en System.Drawing.Color
    Par Silex dans le forum Windows Forms
    Réponses: 6
    Dernier message: 27/04/2005, 08h21
  3. Réponses: 3
    Dernier message: 26/05/2004, 23h03
  4. conversion de String en Num
    Par Assiobal dans le forum SL & STL
    Réponses: 31
    Dernier message: 15/05/2004, 21h18
  5. Conversions de String à Integer
    Par Rank dans le forum Langage
    Réponses: 5
    Dernier message: 06/08/2003, 16h30

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