Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Langage
Langage Tout ce qui concerne le langage (POO, syntaxe, message d'erreur...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/12/2012, 09h49   #1
Linpow
 
Homme
Inscription : décembre 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2012
Messages : 4
Points : -2
Points : -2
Par défaut Problème Lexique + Tableau (La partie gauche n'est pas affectable)

Bonjour à tous,

Je suis vraiment un novice en Langage Pascal et en programmation tout simplement.. Je dois créer une application qui doit gérer un lexique de termes,je travaille avec un vecteur en mémoire centrale et pour assurer la pérénité
des données, je les enregistre dans un fichier lorsque je quitte l'application.

Le problème est que je suis bloqué à la première procédure qui permettrait d'ajouter un terme et sa définition dans le vecteur ... L'erreur est : "La partie gauche n'est pas affectable", n'ayant jamais rencontré cette erreure je ne sais pas vraiment ce qu'elle signifie.

Je vous balance le code, merci d'avance !!!

Code :
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
Const
  cheminFichier = 'FichierLexique.dta';
 
TYPE
  mot20 = string[20];
  mot255 = String[255];
  Elementstd = record
                 terme : mot20;
                 definition : mot255;
               End;
  TabElement = array[1..100] of Elementstd;
  FichierElement = file of Elementstd;
 
var
  Lexique : TabElement;
  FileLexique : FichierElement;
  NbMots : integer;
  vchoix : integer;
 
 
//Cette procédure permet de générer le vecteur à partir du fichier de sauvegarde
Procedure ChargerLexique(out Lexique : TabElement; out NbMots : integer);
Var
   vinterm : Elementstd;
   i : integer;
begin
   AssignFile(FileLexique, cheminFichier);	  //assignation de la variable au fichier physique
 	 {$I-}			           //directive de compilation pour intercepter une erreur d'entrée sortie
   Reset(FileLexique);			   //ouverture du fichier en lecture-écriture
   {$I+}
   if IOResult = 0 then	 //test de la variable système IOResult (Input Output Result)
      begin
        writeln('Le fichier lexique a été ouvert avec succès !!');
        		        //le fichier est ouvert en lecture-écriture. (on est placé au début du fichier)
        I := 0;
        While (not eof(FileLexique)) AND (I < 100) do	 //boucle de parcours du fichier jusqu'à la fin du fichier
               	                                       //on s'assure dans la condition qu'on ne dépasse pas la capacité du vecteur.
            begin
               Read(FileLexique,vinterm);	        //on prend l'enregistrement qu'on recopie dans la variable intermédiaire.
               i := i + 1;
               Lexique[i] := vinterm;	        //on met la variable intermédiaire dans le tableau
            end;
        Nbmots := i;
      end
   else
      begin
        writeln('Le fichier lexique n''existe pas ! Le lexique sera vide');
       //Puisque le fichier n'existe pas on le crée avec Rewrite.
       //Il sera créé avec aucun enregistrement pour l'instant
        Rewrite(FileLexique);
        Nbmots := 0;
      end;
end;
 
// Cette procédure sauvegarde le vecteur Lexique dans le fichier
procedure SauvegarderLexique (const Lexique : TabElement; const NbMots : integer);
Var
   i : integer;
   vinterm : elementstd;
begin
  REWRITE(FileLexique);	     //ouverture du fichier en écriture. Attention! Danger! On recrée le fichier.
                             //Donc s'il contenait des informations, elles sont  détruites.
  I := 1;
  While I <= Nbmots Do	     //boucle pour traiter tous les enregistrements du vecteur.
    begin
      vinterm := Lexique[I];	        //copie de la cellule dans la variable intermédiaire
      write(FileLexique, vinterm);	  //copie de la variable intermédiaire dans le fichier
      I := I + 1;
    end;
end;
 
 
 
 
 
 
 
procedure AjouterDefinition (const Lexique : TabElement; const Nbmots : Integer);
Var
vrep : char;
 
begin
   vrep := 'o';
   While (vrep = 'o') and (Nbmots < 100) DO
   begin
      Writeln('Indiquez le terme à definir : ');
      Readln(Lexique[Nbmots + 1].terme);
      Writeln('Indiquez la definition de ce terme : ');
      Readln(Lexique[Nbmots + 1].definition);
      Nbmots := Nbmots + 1;
      Writeln('');
      Writeln('Voulez vous saisir un autre terme ainsi que sa definiton ? o/n ');
      Saisir(vrep);
   end;
end;
Linpow est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/12/2012, 11h58   #2
Charly910
Membre chevronné
 
Avatar de Charly910
 
Homme Charly
Ingénieur TP
Inscription : décembre 2006
Messages : 582
Détails du profil
Informations personnelles :
Nom : Homme Charly
Localisation : France

Informations professionnelles :
Activité : Ingénieur TP
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : décembre 2006
Messages : 582
Points : 664
Points : 664
Bonjour,

c'est parce que tu déclares Lexique et Nbmots en Const dans la déclaration de ta fonction - tu ne peux donc pas les modifier

retire Const (et mets Var à la place, mais ce n'est pas indispensable)

A+

Charly
Charly910 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2012, 12h05   #3
Ph. B.
Expert Confirmé
 
Avatar de Ph. B.
 
Homme Philippe
Inscription : avril 2002
Messages : 1 026
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 46
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2002
Messages : 1 026
Points : 2 651
Points : 2 651
Envoyer un message via ICQ à Ph. B. Envoyer un message via Skype™ à Ph. B.
Bonjour,
Citation:
Envoyé par Linpow Voir le message
Le problème est que je suis bloqué à la première procédure qui permettrait d'ajouter un terme et sa définition dans le vecteur ... L'erreur est : "La partie gauche n'est pas affectable", n'ayant jamais rencontré cette erreure je ne sais pas vraiment ce qu'elle signifie.
Const pour données constantes et invariables, cela ne vous dit rien ?
L'aide de Delphi précise :
Citation:
Un paramètre constante (const) est semblable à une constante locale ou à une variable en lecture seule.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure AjouterDefinition (const Lexique : TabElement; const Nbmots : Integer);
Var
vrep : char;
 
begin
   vrep := 'o';
   While (vrep = 'o') and (Nbmots < 100) DO
   begin
      Writeln('Indiquez le terme à definir : ');
      Readln(Lexique[Nbmots + 1].terme);   // <= affectation impossible avec const 
      Writeln('Indiquez la definition de ce terme : ');
      Readln(Lexique[Nbmots + 1].definition);// <= affectation impossible avec const 
      Nbmots := Nbmots + 1;// <= affectation impossible avec const 
      Writeln('');
      Writeln('Voulez vous saisir un autre terme ainsi que sa definiton ? o/n ');
      Saisir(vrep);
   end;
end;
__________________
Philippe.
Ph. B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2012, 13h59   #4
Linpow
 
Homme
Inscription : décembre 2012
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2012
Messages : 4
Points : -2
Points : -2
Merci à vous deux, réponses claire et concise !
Le problème est résolu, c'était effectivement une erreur que je suis censé tout de même connaitre, au moins je ne la commettrai plus.
Linpow est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h08.


 
 
 
 
Partenaires

Hébergement Web