Questions sur les fichiers.txt

Signaler
Messages postés
9
Date d'inscription
vendredi 26 février 2010
Statut
Membre
Dernière intervention
1 mars 2011
-
Messages postés
9
Date d'inscription
vendredi 26 février 2010
Statut
Membre
Dernière intervention
1 mars 2011
-
Bonjour,

J'ai encore besoin de votre aide si possible.. '^^
Voilà mon problème. J'ai emprunter un bouquin sur delphi pour pouvoir approfondir mes connaissances sur ce logiciel et j'ai cherché sur de nombreux sites mais je bloque à un endroit.
En effet, j'ai appris comment écrire, lire des données dans un fichier texte afin de sauvegarder ce que l'uilisateur saisie lorsqu'il utilise l'application et qu'il puisse les récupérer lorsqu'il la ré-ouvre.

Toujours sur mon idée de dictionnaire, je conserve mes données ( mots et définitions ) dans un fichier texte.
Je les sauvegarde de la manière suivante :

monMot1 : maDéfinition1.
monMot2 : maDéfinition2.
...
Bien entendu monMot et ma définition sont écrit sous forme de texte dans mon fichier.
A présent, j'aimerais savoir comment je peux récupérer la définition après avoir recherché dans mon fichier le mot correspondant.
Je m'explique :


J'aimerais faire en sorte que mon fichier texte soit un tableau de plusieurs lignes et d'une colonne :

1 monMot1 : maDéfinition1
2 monMot2 : maDéfinition2
3 ...

Par le biais d'une boucle, j'aimerais passer d'une ligne à une autre et une fois que je trouve mon mot, par exemple ici monMot2, je récupère la définition correspondante.
J'obtiendrais ainsi dans mon mémo ou mon label juste maDéfinition2


J'en suis là mais le souçi est qu'il n'y a pas la boucle ni le tableau et donc si je tape n'importe quel mot, j'obtient la définition du premier mot du fichier.
Quelqu'un arriverait-il à modifier cette procédure pour faire cela avec des commentaires afin que je comprenne le principe?

procedure maProcédure(Fich,monMot:string);
var
F: TextFile;
define:string;
begin
if not FileExists(Fich) then exit;
AssignFile(F, Fich);
Reset(F);
Readln(F, define); //lit une ligne du fichier jusqu'au prochain saut de ligne
FDico.mem_define.Caption := define; //Applique la définition au label.
CloseFile(F);
end;

3 réponses

Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
Tu dois faire une recherche dichotomique, je te conseille de charger ton ou tes fichiers dans des tstringlist pour une recherche plus simple et rapide.
A ta place je ferais 2 fichiers, un contenant les mots, un autre les définitions, la relation est que le Nème mot a la définition dans le fichier 2 en ligne N.
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
base de donnée, genre SQLite, sera plus rapide et plus performant.
Messages postés
9
Date d'inscription
vendredi 26 février 2010
Statut
Membre
Dernière intervention
1 mars 2011

Merci JulioDelphi pour ta réponse rapide et claire !
C'est vrai que tu as eu une bonne idée de séparer les mots des définitions, cela va m'enlever bien des problèmes.

Merci aussi à toi f0xi, pour l'instant je ne sais pas trop utiliser les bases de données. Dans le guide de développement Borland de Delphi 7, je n'ai fait que survoler ces chapitres.
Je m'y pencherais un peu plus sérieusement lorsque j'aurais du temps libre.

Merci à vous, je vais voir si j'arrive à régler mon problème avec cela ;)