Utiliser le contenu d'un fichier texte sans composant memo

Utiliser le contenu d'un fichier texte sans composant memo - Delphi/Pascal - Programmation

Marsh Posté le 29-04-2005 à 22:45:09    

Bonsoir les gens :jap:  
Je cherche donc un moyen de me servir d'un fichier texte banal pour y lire une chaine de caractère à la fois dedans : chaque  ligne possède  une certaine chaine  de caractère et je veux fouttre dans une variable l'une de ces chaines de caractère (en fait une de ces lignes donc) au hasard.
J'ai pensé donc d'abord charger intégralement ce fichier texte dans un composant memo (ayant sa propriété visible à false donc) et ensuitemeservir facilement des propriétés de ce composant pour faire ce que je veux : par exemple la "propriété" memo.lines.count pour avoir le nombre de ligne et gerer facilement ma fonction hasard.
A propos, pour charger le fichier texte dedans, on fait bien comme ça:
memo.lines.loadfromfile(fichier_texte.txt);
:??:
 
Comme je trouve cette technique un peu "crade", je me demandais si on ne pouvais pas faire ceci directement du fichier texte, sans se servir donc du composant memo et de ses propriétés en intermédiaire [:xx_xx]  
 
Bon je ne sais pas si j'ai été très clair, mais en même temps c'est encore assez fouilli dans ma tête  [:tsouille] Donc demandez si ya un truc que vous n'avez pas bien compris
 
Voila, donc si vous avez des idées :o
 
ps: ca doit êtrefaisable sous delphi4, pas plus haut :D

Reply

Marsh Posté le 29-04-2005 à 22:45:09   

Reply

Marsh Posté le 29-04-2005 à 23:14:22    

Sachant que la propriété Lines du TMemo est un TStrings, et que la classe TStringList est aussi un TStrings, je te laisse deviner le nom de la classe à utiliser si tu veux juste jouer avec ce TStrings sans avoir tout le TMemo :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-04-2005 à 14:01:58    

[:ddr555]
bon j'ai à peu près vaguement réussi ce que je voulais, mais maintenant, je voudrais pouvoir me déplacer à une ligne voulue dans le fichier texte. On m'a dit d'utiliser la fonction seek, mais je ne comprends pas bien son fonctionnement :p Ya pas une fonction simple genre "takeline(file,n)" :D
:hello:

Reply

Marsh Posté le 30-04-2005 à 14:39:38    

:??: Si tu charges tout le fichier t'accèdes à la ligne d'index N via Liste[N] où Liste est ta liste


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-04-2005 à 14:51:26    

oui je vais faire comme ça, en fait, j'essayais de travailler sans liste directement dans le fichier :o Mais je vais utiliser cette methode ou celle du  memo, parce-que je m'en sors pas [:ddr555]. Au pire je modifierai plus tard :D

Reply

Marsh Posté le 30-04-2005 à 15:22:13    

Il y a rien de prévu pour te donner la N-ème ligne d'un fichier, vu que pour savoir où sont les lignes il faut de toute façon lire tout le contenu en comptant les retour à la ligne. Tu peux faire une boucle de ReadLn par exemple.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-04-2005 à 15:39:30    

ah d'accord, merçi pour ces précisions :)
:hello:

Reply

Marsh Posté le 30-04-2005 à 19:08:01    

Bon j'ai presque finis, il y a justeun probléme à la compilation,c'estqu'il me sort l'erreur la:
[Erreur] MainUnit.pas(74): Déclaration forward ou external non satisfaite : 'TMain.appartient'
[Erreur] MainUnit.pas(75): Déclaration forward ou external non satisfaite : 'TMain.decouvrir'
[Erreur] MainUnit.pas(76): Déclaration forward ou external non satisfaite : 'TMain.mot_au_hasard'
 
appartient et mot_au_hasard sont des fonctions que j'ai rajouté et decouvrir une procedure,tandis que main est le nom de ma fiche princiaple. Cela s'arrete dans la partie type en haut de la feuille,j'ai d oublier un petit truc quelque part, mais je ne vois pas trop ce que c'est [:pulpipi]
Tu vois quel est le problème?! :jap:


Message édité par darkangel le 30-04-2005 à 19:08:45
Reply

Marsh Posté le 30-04-2005 à 21:30:07    

T'as déclaré les fonctions/procédures dans "interface" mais pas leur contenu dans "implementation" [:spamafote]
Essaie Ctrl+Shift+C quand le curseur est sur une des trois, pour qu'il crée les fonctions/procédures dans la partie implémentation ; mais en Delphi 4 je ne sais pas si ce raccourci existait déjà, il faut probablement les déclarer à la main.
Et si tu les as déjà déclarées dans implementation, t'as dû oublier de préfixer le nom de la fonction du nom de la classe (function TMain.appartient...)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-04-2005 à 21:50:17    

Alors déjà le raccourcis fonctionne, mais me créé alors des fonction procedure en dessous qui n'ont pas à être là, puisqu'elle sont déjà là :o
 
En rajoutant Tmain., voiçi ce qu'il me sort :heink:  
http://achaifair.free.fr/tmain.png
 
Le Tmain. je viens de le rajouter pour voir ce que celà fait, sinon cela s'arrete en message d'erreur comme j'avais dit plus haut.
 
Je ne sais pas si tu vas  voir comme ça quel est le problème, mais bon, sait-on jamais [:yaisse2]
 
ps: le curseur est alors juste derrière appartient. De plus les fonctions sont déjà et dans implemtation et dans interface. Donc j'ai essayé t.main, mais je ne sais pas si c'est comme ça que tu pensais faire :o


Message édité par darkangel le 30-04-2005 à 21:51:57
Reply

Marsh Posté le 30-04-2005 à 21:50:17   

Reply

Marsh Posté le 30-04-2005 à 22:04:46    

Gloups autant pour moi, c'était dans la section implementation qu'il fallait mettre les tmain [:cyriadis]  
 
Maintenant il se lance, merçi encore à toi :ouch: Plus que 2-3babioles à regler et c'est fini [:rhetorie du chaos]

Reply

Marsh Posté le 30-04-2005 à 22:44:43    

darkangel a écrit :

mais me créé alors des fonction procedure en dessous qui n'ont pas à être là, puisqu'elle sont déjà là :o


 
Soit c'était buggé dans Delphi 4 soit tu les avais mal mises :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 30-04-2005 à 22:46:29    

C'était potentiellement une combinaison des 2 [:ddr555]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed