Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1491 connectés 

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Afficher le contenu d'un .txt dans un TMemo

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Afficher le contenu d'un .txt dans un TMemo

n°1502688
$temp
Posté le 14-01-2007 à 11:12:36  profilanswer
 

Bien bien bien...  
 
Y'a pas à dire, le Delphi c'est pas trop in, hein, comme langage...  :heink:  
En PHP, y'a plus de vie sur les forums...  
 
Comme je sais jamais comment on vire un message, j'en suis donc à la troisième édition de celui ci, pour mon troisième pb. En l'occurence, c'est plutôt une interrogation.
 
En fait, j'ai une table que je vais remplir grace à un formulaire. Jusque là tout va bien. Seulement, le truc qui m'interroge un peu, c'est que je veux qu'un des champs de ce formulaire soit en fait un petit texte qu'on peut taper. Je pense donc enregistrer ce texte dans un dossier du style .txt, parce que sinon il me semble qu'on est limité à 255 caractères, puis ça ferait une base trop lourde t'façons.
 
C'est à dire que quand on valide le formulaire, il faudrait que chaque champ enregistre ce qui le concerne, et qu'en même temps un (l'id de l'enregistrement).txt soit créé pour le petit texte associé. Il s'agirait ensuite de pouvoir l'afficher, quand dans le prog on veut afficher les enregistrements.
 
Des idées ? Des pistes ? Je pense pouvoir peut-être me débrouiller pour l'enregistrement, mais je sais pas trop comment faire pour pouvoir afficher ensuite
 
Merci d'avance, si jamais je découvre que je ne suis pas la seule personne à oser m'aventurer dans la partie Delphi du forum  [:alph-one]
 
 
 
 
Nan mais sérieux, c'est mort à ce point le Delphi ?
Même pas un message d'un inconnu style "Machin was here", tel jour  :sweat:  
 
 
Bon, un pb en plus, si quelqu'un a une solution miracle, parce que j'en trouve pas. J'ai deux tables qui ont des index secondaires. Leur nom fait genre une dizaine de caractère ou un peu plus pour chacun.
 
Seulement là, ma troisième table est racalcitrante. Pas moyen de créer un seul index parce que "File name is too long for a Paradox version 5.0 table". Seulement même quand je tente un truc à trois pov caractères, il me jette.
 
Est-ce que par miracle, quelqu'un lira ce message ? Est-ce que par un miracle encore plus grand, quelqu'un pourra y répondre ?  [:alph-one]


Message édité par $temp le 16-01-2007 à 10:58:36
mood
Publicité
Posté le 14-01-2007 à 11:12:36  profilanswer
 

n°1503542
el zozo
Stroumf Grognon
Posté le 16-01-2007 à 11:30:49  profilanswer
 

El zozo was here  :hello:  

Spoiler :

Mais c'est vrai que c'est un peu mort  :cry:


 
Pour le problème n°1, le plus simple (de loin) me parait etre de créer une colonne Blob dans ta base (Type "TEXT" en My SQL ou en MS SQL Server, mais je sais pas si c'est un type "officiel" en SQL) et d'y associer un controle TDBMemo.
 
Sinon, une solution "de haute voltige" (et surtout adaptable pour n'importe quel cas) est d'utiliser les TFieldDataLink.
 
DataFieldLink := TFieldDataLink.Create;
DataFieldLink.fieldname := NomChamp;
DataFieldLink.DataSource := Datasource;
DataFieldLink.Control := MonMemo;
DatafieldLink.OnDataChange := RemplirMemo;  //une methode de type TNotifyEvent
 
Ainsi, une modfication du champ du dataset lié au datasource (qui se retrouve lui mème lié au Memo) déclenchera la procédure RemplirMemo.

n°1503621
$temp
Posté le 16-01-2007 à 13:50:13  profilanswer
 

:love:  Enfin quelqu'un !
 
J'ai pas tout compris à tes conseils, vu que je suis débutante, mais en tout cas je vais tenter de tatonner pour mettre ça en application. Merci !

n°1503720
$temp
Posté le 16-01-2007 à 15:55:24  profilanswer
 

Faut positiver, j'apprends à me débrouiller par moi même au moins...


Message édité par $temp le 16-01-2007 à 16:11:49
n°1503844
el zozo
Stroumf Grognon
Posté le 16-01-2007 à 19:02:55  profilanswer
 

Arf!!! Le probleme de ce forum, c'est aussi que c'est bouré de débutant... forcement, il reste pas grand monde pour repondre aux question.. alors progresse vite  :lol:  
 
Bon... Tu sais te servir des controls du genre TDBEdit?
Si oui, TDBMemo, ca marche de la meme façon sauf que le champ corespondant dans la base est du type TEXT ou équivalent(une variable texte pouvant faire plusieur lignes) ce qui supose que ta base suporte ce type. Si je me rapelle bien, n'est pas le cas de Paradox.  :(  
Si tu ne sais pas te servir d'un TDBEdit, ben euh... tatonne un peu  (c'est dans l'onglet DBControl)
 
                                           -------------------------
 
Pour la solution avec le DataFieldLink, c'est un peut plus pointu (le code est court, mais si on le comprend, c'est mieu). Mais si tu veut absolument utiliser des memo avec une base de donnée ne sachant pas les gerer, c'est la méthode la plus propre et la plus réutilisable (j'ai pas dit la plus simple).
 
En gros, tu utilise un objet de type TDataFieldLink qui a pour fonction de surveiller un champ de la base de donnée. Quand ce champ est modifié (quelle que soit la source de la modification), cet objet appele la méthode OnDataChange.
 
La subtilité, c'est que OnDataChange n'est en fait pas une "vrai" méthode, mais une variable de type méthode (plus exactement de type TNotifyEvent).
Il faut donc déclarer une méthode (au niveau du TForm1, par exemple) avec la mème "signature", puis l'affecter à OnDataChange et là, miracle : sans que tu n'ai a programmer quoi que ce soit, dès que le champ change (donc, sur un next, un open, un Previous, un Close, voire un Post), la méthode sera appelée.
 
Grosso modo, ça donne (j'ai pas de Delphi sous la main pour vérifier, mais n'hésite pas à te balader dans l'aide en ligne):
 

TForm1
  private  
     procedure ChargementMemo1(sender: TObject);  //equivalent au type "TNotifyEvent"
   (...)
end;
 
implementation
 
procedure TForm1.OnCreate(...)
begin
  DataFieldLink := TFieldDataLink.Create;
  DataFieldLink.fieldname := NomChamp;  //pour ce que tu veut faire, l'id sera parfait
  DataFieldLink.DataSource := Datasource;
  DataFieldLink.Control := MonMemo;
  DatafieldLink.OnDataChange := ChargementMemo1;  //une methode de type TNotifyEvent  
end;
 
procedure TForm1.ChargementMemo1(sender: TObject);
//au sein de cette procedure, Sender est l'objet ayant appelé la méthode. Si le code ce limite à cet exemple, c'est donc forcement DatafieldLink
begin
  //A toi de jouer, je ne vais quand mème pas tout faire
end;


 
Et que l'esprit du grand Anders Hejlsberg t'acompagne, ma petite  [:adodonicoco]


Message édité par el zozo le 16-01-2007 à 19:15:38
n°1504067
$temp
Posté le 17-01-2007 à 10:59:02  profilanswer
 

Salut El Zozo (et pensée pour l'esprit d'Anders Hejlsberg, s'il traine dans le coin (il est pas mort, nan ?))
(Salut aussi à toi qui erre sur ce post, si tu existes)
 
Je viens présenter mon pb du jour : j'ai des enregistrements que je veux pouvoir modifier.
C'est à dire que j'affiche dans des edits ce qui correspond à un enregistrement, et que je peux changer mes trucs. L'idéal serait que quand je clique sur 'enregistrer les changements', ben ça les enregistre.
 
D'où la question : comment que je fais pour me positionner dessus, et pour pouvoir modif la valeur des champs ?
 
Et une autre question : pourquoi j'arrive pas à trouver ces infos en cherchant sur le net ? Je sais pas me servir de l'aide ? Ou alors je suis trop habituée au php pour lequel on trouve plein d'infos en ligne assez facilement ? Pire, je suis neuneu ?!??


Message édité par $temp le 17-01-2007 à 10:59:37
n°1504115
el zozo
Stroumf Grognon
Posté le 17-01-2007 à 12:25:30  profilanswer
 

Moi z'veux bien aider, mais mets y un peu du tien  :na:  
1) nouveau probleme => nouveau sujet
2)Utilise un terme un peu plus prècis que "enregistement" . Parle tu d'un enregistrement Pascal(type record), d'un enregistrement dans un fichier (file of record) ou d'une ligne dans une table relationnelle?
3)Pour éviter les ambiguité, utilise tant que possible les nom exact des type utilisés. Quant tu dit que tu affiche dans "des edits", tu parle de controls de type TEdit ou TDBEdit? Si c'est TDBEdit, il suffit d'une commande MonDataset.post (ou MonDataset est le dataset lié au TDBEdit).
 
Et ouai, c'est comme ça : j'suis un vieu con  :kaola:  
 
Pour l'aide de Delphi, une raison pour laquelle on ne trouve pas de site contenant l'aide à proprement parler, c'est que l'aide de Delphi (la touche F1 est ton amie) est très bonne. Ca doit etre ta première source d'info.
La raison pour laquelle on ne trouve pas de tutorial sur le net... la c'est domage  [:calimero]

n°1505317
Flagad'awa​re
c pô moi, j'ai pas touché!
Posté le 20-01-2007 à 13:26:08  profilanswer
 

el zozo a écrit :


La raison pour laquelle on ne trouve pas de tutorial sur le net... la c'est domage  [:calimero]


 
Salut à vous
 
ce que je trouve dommage c'est qu'il n'y a pas beaucoup d'exemple dans l'aide :/
 
certe c'est hyper complet mais quand on débute et qu'on voit "appellez la méthode de classe héritée de Tclecaillon"* et bah ça fait peur, avouez qu'il faut être un debutant expérimenté lol, alors qu'une ligne de code c'est souvent  bien  plus parlant
 
faut surtout pas oublier le guide de Frédéric BEAULIEU http://fbeaulieu.developpez.com/guide/index.html
 
 
 
* faut pas chercher ça veut rien dire [:athlonxp2100+]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Afficher le contenu d'un .txt dans un TMemo

 

Sujets relatifs
Afficher que la première page d'un fichier pdf[ASP] inserer contenu html dans une page asp
Afficher une image ne ASM.Afficher le texte de var=salut dans un swf
Comparer le contenu d'un messagbox??????comment afficher mon menu ?
problème avec java 1.5.0 pas moyen d'afficher un graphique[réglé] afficher/cacher un div toutes les secondes.
Lister le contenu d'une archive .zip ?Faire afficher un JPanel lors d'un evenement avec Actionlistener
Plus de sujets relatifs à : Afficher le contenu d'un .txt dans un TMemo


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR