Questions sur les fichiers.txt

Dpx26000 Messages postés 9 Date d'inscription vendredi 26 février 2010 Statut Membre Dernière intervention 1 mars 2011 - 12 mars 2010 à 19:44
Dpx26000 Messages postés 9 Date d'inscription vendredi 26 février 2010 Statut Membre Dernière intervention 1 mars 2011 - 13 mars 2010 à 21:30
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

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
13 mars 2010 à 11:58
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.
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
13 mars 2010 à 13:53
base de donnée, genre SQLite, sera plus rapide et plus performant.
0
Dpx26000 Messages postés 9 Date d'inscription vendredi 26 février 2010 Statut Membre Dernière intervention 1 mars 2011
13 mars 2010 à 21:30
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 ;)
0