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 : 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
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;
Partager