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

Langage Delphi Discussion :

Case interger of - caractère en trop


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Case interger of - caractère en trop
    Bonjour,

    J'ai une structure de ce type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    type TMaStruct = Record
      Case integer of
        0: (AdrComplet : String[10]);
        1:(
            Adr1 : Array [0..4] of Ansichar;
            Adr2 : array [0..4] of AnsiChar;
        );
    end;
    Le problème c'est quand j'affiche Adr1, j'ai un caractère au début qui ne correspond pas a ce que j'attend

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var
      MaStruct : TMaStruct;
    begin
      MaStruct.AdrComplet := '01234567890';
     
      Showmessage(MaStruct.Adr1 + ' - ' + MaStruct.Adr2);
    end;
    Est ce du au fait que le string à en 0 ( ou + ?) le nombre de caractères qui rempli sa ligne ?
    Dois je prendre un autre type que le String (Pas un array de préférence) ?

    Merci
    Modérateur Delphi

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

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 476
    Points : 24 937
    Points
    24 937
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    type TMaStruct = packed Record
      Case integer of
        0: (AdrComplet : AnsiString[10]); // A cas où D2009 !
        1:(
            LenAdr: Byte; // Ben oui la longueur du chaine courte !
            Adr1 : Array [0..4] of Ansichar;
            Adr2 : array [0..4] of AnsiChar;
        );
    end;
    Pour l'affectation de 11 char dans 10 normalement ça tronque, heureusement que ça n'écrit pas chez le voisin !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  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
    Ok, merci, ma réflexion était donc bonne ^^
    Modérateur Delphi

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

  4. #4
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    tu aurais egalement pus faire :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    type 
      TMaStruct = packed record
        case integer of
          0: (AdrComplet : array[0..9] of char);
          1: (Adr1, Adr2 : array [0..4] of char);
      end;
    Delphi, grace à la syntaxe etendue, interpretera les Array[0..n] of char comme des chaines assignable au String et inversement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var
      S : string;
    begin
      S := 'bonjour';
      MS.AdrComplet := S;
      S := MS.Adr1;
    end;
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

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

Discussions similaires

  1. [MySQL] Caractère en trop dans la BDD
    Par Kralby dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 04/06/2014, 14h21
  2. [VB.NET 2005] Fichier binaire et caractère en trop
    Par joefou dans le forum VB.NET
    Réponses: 6
    Dernier message: 08/12/2011, 15h32
  3. [C# et RS232] Envoi d'un caractère de trop avec WriteLine()
    Par legillou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/06/2006, 11h06
  4. Réponses: 2
    Dernier message: 18/03/2006, 19h07
  5. [String] Caractère en trop au début d'un fichier
    Par Seiya dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 12/07/2004, 14h00

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