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

Lazarus Pascal Discussion :

Les tableaux de données [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 206
    Par défaut Les tableaux de données
    Bonjour,

    J'essaye, pour la première fois, d'utiliser des tableaux de données sous Lazarus. En fait, je cherche à renseigner dans une base de données le nom (en toutes lettres) d'un département à partir d'un code postal :
    Expl : afficher Hérault si le code postal est 34532 .
    Pour cela j'ai créé un tableau selon le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Type Dptlist = Array [1..105, 1..105]of string ;
    et ensuite, après le Begin, j'ai entré les valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dptlist [1,1]:='AIN ';
    Dptlist [1,2]:='AISNE ';
    etc... et puis les valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dptlist [2,1]:='01';
    Dptlist [2,2]:='02';
    etc..
    Je compte après faire un test sur les 2 ou 3 premiers caractères du code postal pour afficher automatiquement le nom du département.
    J'ai un message : Variable identifier Expected pour chacune des lignes entrées (en fait j'ai fabriqué les 210 lignes du code à l'aide d'une formule sous Calc Libreoffice et ai collé dans Lazarus cette liste au format CSV).
    Quelqu'un pourrait-il m'éclairer sur le problème car il me semble que tout est défini comme une chaîne ?
    De plus, les départements avec des apostrophes me posent un problème. J'ai bien tenté de substituer aux ' l'instruction QuotedStr() mais cela ne fonctionne pas comme je voudrais.
    Autre question : est-il possible de remplacer dans la définition de la taille du tableau des valeurs fixes [1..105] par exemple par une variable dont la valeur sera connue lors de l'exécution du programme (par exemple le nombre d'enregistrements - expl: [1..NbEnr] avec NbEnr := Recordcount.
    Merci pour votre aide.

    R.O.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 969
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 969
    Par défaut
    Noa,

    Tu confonds définition d'un type et définition d'une variable.

    Dans ton code, Dptlist n'est qu'un type, il faut déclarer une variable de ce type pour pouvoir l'utiliser.

  3. #3
    Membre expérimenté
    Profil pro
    au repos
    Inscrit en
    Février 2013
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : Saint-Pierre-Et-Miq.

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2013
    Messages : 161
    Par défaut
    hello,
    voici des exemples pour t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    type typDptlist = Array [1..105, 1..105]of string ;
    var DptList : typDptlist;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var Dptlist: Array [1..105, 1..105]of string ;
    pour le dynamique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var Dptlist: Array of Array of string ;
    begin
    SetLength(Dptlist,105,105);
        Dptlist[1, 22] := 'Côtes-d''Armor ';
        Dptlist[2, 22] := '22';
    end;
    je ne sais pas exactement ce que tu veux faire mais il me semble qu'il te faudrait mieux utiliser une classe ou une structure (record).

    Amicalement, nullosse

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 206
    Par défaut Tableaux et variables
    Bonjour,

    Merci à Drogo pur la réponse.
    En fait, après avoir posté, j'ai regardé sur Delphi et ai vu qu'il fallait que je définisse des variables et non pas un type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Var Dptlist : Array [1..105, 1..105]of string ;
    et là cela fonctionne.
    Par contre mes questions sur le probème de l'apostrophe (Côte d'Or, Côte d'Armor et Val D'Oise reste entier ainsique la définifion de la taille du tableau par une variable.

    Merci

    R.O.

  5. #5
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Pour commencer, il y a quelque chose qui me laisse perplexe dans ton code, c'est le tableau à deux dimensions. Pourquoi deux dimensions, alors qu'il s'agit d'une simple liste ?

    Il me semble qu'un tableau de chaînes à une dimension ferait l'affaire, le numéro du département pouvant être utilisé pour accéder directement à la chaîne correspondante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      NomDepartement[45] := 'Loiret';
    Cela poserait peut-être un problème pour les départements d'outremer qui commencent par les deux mêmes chiffres (97).

    Pour la taille du tableau définie par une variable, la réponse a déjà été donnée par Nullosse : il suffit de remplacer "105" par une variable, comme argument de la procédure SetLength().

    Concernant les apostrophes, il faudrait que tu dises plus précisément quel est le problème rencontré.

    P.-S. Mais, vu que le nombre de départements ne change pas, pourquoi utiliser une variable ?

  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 151
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 151
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    (...) le numéro du département pouvant être utilisé pour accéder directement à la chaîne correspondante.
    Faudra le coder en hexa, alors, parce que la Corse c'est 2A et 2B

    Citation Envoyé par Roland Chastain Voir le message
    (...) Concernant les apostrophes, il faudrait que tu dises plus précisément quel est le problème rencontré.
    Je pense qu'il doit avoir le problème avec 'Côte d'Azur' par exemple.
    Suffit de doubler les apostrophes "grammaticales", si je puis dire : 'Côte d''Azur'

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Faudra le coder en hexa, alors, parce que la Corse c'est 2A et 2B
    C'est vrai, je n'y avais pas pensé.

    Du coup mon truc ne fonctionne que pour les dix-neuf premiers départements.

    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
    program ExempleDepartements;
     
    {$IFDEF VPASCAL}{&PMTYPE VIO}{&USE32+}{$H+}{$ELSE}{$APPTYPE CONSOLE}{$IFDEF FPC}{$MODE DELPHI}{$H+}{$ENDIF}{$ENDIF}
     
    type
      tDepartement = record
        numero: string;
        nom: string;
      end;
     
    const
      nombreDepartements = 101;
     
    var
      departements: array[1..nombreDepartements]of tDepartement;
     
    begin
      departements[20].numero := '2A';
      departements[20].nom := 'Corse-du-Sud';
      departements[21].numero := '2B';
      departements[21].nom := 'Haute-Corse';
      departements[22].numero := '21';
      departements[22].nom := 'Côte-d''Or';
     
      Write('Appuyez sur la touche Entr'#130'e... ');
      ReadLn;
    end.
    Quelle drôle d'idée aussi, d'avoir coupé la Corse en deux !

    P.-S. D'après la liste que je viens de consulter, il y aurait 101 départements, et non pas 105.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/01/2014, 19h37
  2. les tableaux et base de données
    Par ashley dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 16/08/2010, 12h18
  3. Police dans les tableaux de données
    Par strikerm59 dans le forum Sql Developer
    Réponses: 0
    Dernier message: 18/12/2007, 15h26
  4. Réponses: 8
    Dernier message: 17/05/2006, 10h51

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