..:: BALISES DANS UN RICHEDIT ::..

DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003 - 22 mars 2003 à 12:07
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003 - 31 mars 2003 à 21:44
Bonjour à tous,

Suite au message que j'avait envoyé (celui du dessous d'ailleurs) j'avais essayé de transmettre des parametres de couleurs, de font, de style d'un RichEdit vers un autre en LOCAL déjà.

J'avais choisi comme solution celle que Nono40 m'avait donné, à savoir l'insertion de balises comme le html dans un RichEdit.

Le problème c trop compliqué à coder, pour les reconnaitre, ex :

<gr>COOL<gr> J'aime le <sl>DELPHI<sl>

Et bien j'arrive a faire passer les parametres, mais pas a enlever les balises ! Ex :

<gr>COOL<gr> J'aime le <sl>DELPHI<sl>

Voila ce que j'obtien dans le RichEdit !

Voila si vous pouvez m'aider ce serai cool car la je suis bloqué et j'arrive pas a trouver d'autres solutions...
Merci,

-[!!!]- DeZNiUS -[!!!]-

41 réponses

DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
26 mars 2003 à 22:09
Merci Delphiprog d'avoir repondu :-)

Oui tu as raison : la discussion s'allonge (c peut-etre un record ??) mais elle est importante pour moi.

J'en est oublié les objectifs tellement ca me "soule" (pardon). En verité il s'agit simplement d'envoyer du texte formaté d'un ClientSocket vers un ServerSocket, de facon a ce que a l'ecran du ServerSocket soit du style :

<EXAMPLE>==

DeZNiUS> COOL LE DELPHI !!
Syntax Error> Je sais que c cool
DeZNiUS> SINON JE FERAI PAS

===<END>===

Le probleme je sais pas copier le texte d'un richedit formaté, et encore moins le mettre dans une variable !
ce qui revient à dire je connait rien du richedit.

Donc plusieurs idees me sont venus à l'esprit...

...par ex de faire des balises, comme le juge le forum, c "mort", c trop dur pour moi a gerer.

...puis le text HTML, qui me parai moins lourd et mieux adapté : vu que g pas de control d'edition HTML, g essaye de faire des fonctions HTML2RTF et RTF2HTML, apres bcp d'heures de recherche avec mon 56K, je me suis dit : impossible.

... puis je suis revenu à l'idee de balise...

... puis maintenant j'en est marre :-)

Donc c juste pour faire un messager formaté, voila le but de la discussion :-)

Merci pour cet mise au point qui j'avoue etait necessaire. Pour ma part j'en est marre de chercher, ca fait preske une semaine que je cherche a environ 3 h par jour, de tt facon g tt mon temps, c juste pour l'experience (d'ailleurs ce sera un freeware, bien sur :-)

@+

-[!!!]- DeZNiUS -[!!!]-

PS : "dasn" ca veut dire koi (si c pas une faute :-)
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
26 mars 2003 à 23:05
Ok, on comprend mieux.
La conversion RTF vers HTML serait plus adaptée à l'écriture d'un éditeur HTML fonctionnant en mode WYSIWYG.
Le format RTF est compressible et le volume résultant ne devrait pas trop ralentir la conversation dans ton messager.
La mise en flux en mémoire doit pouvoir se faire facilement, au moment de l'envoi, à partir du TRichEdit et surtout de sa propriété Lines (voir SaveToStream).
Ensuite, tu échanges le flux par paquets entre le client et le serveur.
Ce ne sont quelques idées qui me viennent spontanément.
Si quelqu'un veut rebondir là-dessus...

PS : "dasn" est une erreur de frappe. Il fallait lire "dans".

PS 2 : j'ai edité le document "Syntax highlightning with RichEdit" mais je ne l'ai pas encore relu en détail. Mais, maintenant que tu as exposé ton problème clairement, je ne suis pas sur que c'était la réponse la plus adaptée.

May Delphi be with you
0
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
27 mars 2003 à 18:30
Salut Delphiprog,

C'est effectivement une bonne idée, mais je ne connaissait pas SaveToStream (on en apprend tt les jours :-)
Je l'avai vu mais je l'avai jamais essayé.

Donc si g bien compris, c trop compliqué a mettre en place. En revanche tu vient de dire qq chose d'important : le format RTF est compressible. C justement ca qui me pose probleme. Un autre probleme est que je n'arrive pas a inserer du texte formate à n'importe quel endroit, explication :

Dans mon RichEdit g déjà :
DeZNiUS> SALUT

Je voudrai inserer une ligne avec du texte formaté. Voila ce que j'obtient :
DeZNiUS> SALUT
SynTaX eRROR> {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fprq2\fcharset0 Army;}{\f1\fswiss\fcharset0 \par} -- ABREGE, BIEN SUR --

C aussi embetant...

Je crois que je peux laisser tomber, ceci est un defi trop lourd a mon niveau. En plus j'imagine la quantité de travail pour creer MS Word !

@+

-[!!!]- DeZNiUS -[!!!]-
0
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
29 mars 2003 à 11:11
Bonjour à tous,

Oui c encore moi (je sais je suis ch...).
Je pense avoir trouve mon bonheur sur Torry's Delphi Page dans la rubrique VCL, une DLL qui s'appelle RTFApi. Je pensai que ca marche, mais l'exemple fourni est impossible a compiler sous Delphi 6 !

J'en est marre, parce que dans le zip y a ce fameux exemple compilé qui MARCHE et c EXACTEMENT ce que je veux...

Deja il y avait une erreur il faut remplacer la declaration "Const" par "Var" parce que un moment donné il change le nom du DLL...

Si qq peut m'aider à le compiler, c gagné, et j'aurait enfin réussi mon objectif .... :-)

-[!!!]- DeZNiUS -[!!!]-
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 mars 2003 à 13:30
C'est bien de reconnaitre ses qualités ! :)

Sérieusement : comme tu as pu le lire en tête de l'unité RTFTools, ce code a été écrit à l'époque de Delphi 3.
Or, Delphi 6, par défaut, ne reconnait plus les constantes typées. C'est le cas de RTFDllName déclarée :
RTFDllNAme : string = 'RTFApi.DLL';

Pour passer outre, tu as deux possibilités : dans les options du projet, onglet compilateur, cocher "Constantes typées affectables". Mais c'est une solution à court terme.

Deuxième solution, plus durable :
Déclarer comme variable RtfDllNAme et, dans la partie initialization, lui affecter la valeur par défaut :
var
  RTFDllName : String;
...
initialization // ·····························································
  RTFLib := 0;
  RTFDllName := 'RTFApi.DLL';

Et là, Ô miracle, ça marche !
May Delphi be with you
0
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
29 mars 2003 à 14:24
Au moins je suis honnête avec vous tous et avec moi je suis ch... :-D

Donc je vais essayer de voir si ca marche ce que tu me propose :-)

Merci qq meme de m'avoir repondu parce que la je vais exploser un de ses jours :-) si tu a cliqué sur mon detail tu verra que g 17 ans (sur mes 18 :-D) et que c normal que je sois ch... et c.o.n (communauté outre nation... nan je blague he he he ;-)

Merci et @+

-[!!!]- DeZNiUS -[!!!]-
0
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
29 mars 2003 à 14:39
Je crois que je vais me tirer une balle :(

J'en est ras le bol :
"Et là, Ô miracle, ça marche !" -> NAN, ca marche pas ! du moins pas comme je voulais.
Ouais super, ca se lance, delivrance... maintenant qd je click, j'obtient le msg d'error :

Indice de listes hors limite (-1) et des fois indice de liste hors limite (0) si je dedui le nb entre parenthese c le n° de la ligne...

Donc ca marche pas comme d'hab ca fait au moins le 15 truc que j'essaye pour faire ce put... >:) de txt formate.

@+

-[!!!]- DeZNiUS -[!!!]-
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 mars 2003 à 15:22
Si ça marche?
Dis-toi bien que j'ai vérifié avant de te répondre ! :(
May Delphi be with you
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 mars 2003 à 15:27
Hé, prends une balle en caoutchouc, ça fait moins mal.

C'est ton code qui ne marche pas ou c'est l'exemple livré avec la DLL ?
Moi, j'ai testé l'exemple livré après l'avoir recompilé. Et CA MARCHE.

Maintenant, si tu ne connais pas la différence entre un indice dans une liste de chaine et le numéro de la ligne, reboote tes méninges... :-p
May Delphi be with you
0
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
29 mars 2003 à 19:12
A ce point ou j'en suis je devrai faire un formatage de mes meninges et une reinstallation :-)

Oui c l'exemple livré avec la DLL qui marche pas chez moi.

-[!!!]- DeZNiUS -[!!!]-
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 mars 2003 à 19:17
Le programme exécutable généré est-il bien dans le même dossier que la DLL ?
May Delphi be with you
0
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
29 mars 2003 à 20:20
Excuse moi je suis peut-etre c.o.n, mais je sais qd meme qu'il doit etre dans le meme dossier, et je comprend un peu l'allemand de tt facon...

oui, il est dans le meme dossier. apres un debuggage step by step, c la ligne suivante qui bugge :

Converter := ConverterList [OpenDialog.FilterIndex - 1];

Ca me parait logik, vu que dedant il y a une allusion a OpenDialog.Filter, et que dans l'exe deja compilé, il y a une liste de Filtres (genre *.html, *.rtf, etc...) et sous le EXE que je compile, deja la boite OpenDialog n'est pas la meme (elle a les boutons raccourcis a gauche), et en plus il n'y a aucun filtre dedant (liste vide).

Donc a mon avis le probleme vient de la.
Au fait, quel version de delphi a-tu ? moi c la 6. si tu as la meme ou meme 7, alors la, la balle de caoutchou je la tire
:-)

@+

-[!!!]- DeZNiUS -[!!!]-
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 mars 2003 à 21:41
Je viens de récupérer la version 1.5 sur le site de l'auteur et, mis à part ce petit problème de constante typée, je t'assure que tout fonctionne correctement. C'est même génial.

Et pour ceux qui ne comprennent pas l'allemand, pensez à désactiver la directive au début de l'unité RTFApiDemo1 en mettant un point (par exemple) devant le signe $
{.$DEFINE GERMAN}
Vous aurez une interface en anglais.
Une remarque : faut-il disposer de Word pour bénéficier des filtres d'exportation ?
Voici ce que donne une exportation de RTF vers HTML (extrait) :
<META NAME="Generator" CONTENT="Internet Assistant for Word Version 3.0">

Autrement dit, si vous avez Microsoft Word, pensez à installer les filtres d'exportation dont vous pourriez avoir besoin.
May Delphi be with you
0
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
29 mars 2003 à 23:32
Je te remercie enormement du temps que tu as passé a me répondre :-)
et de ne pas m'avoir laissé tomber, parce que je pense que si j'avait ete a ta place, j'aurai laissé tomber de repondre a un gars qui demande sans arret la meme chose :sad)

Donc je vais choper sur son site la new version et je verrai... c peut-etre du a ma version de Delphi 6 ? nan, je pense pas :-)

-[!!!]- DeZNiUS -[!!!]-
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
30 mars 2003 à 10:42
L'auteur du code source a remanié son code. C'est sans doute dû à celà plus qu'à des différences entre versions de Delphi (j'utilise aussi D6).
Maintenant, quand quelqu'un aura besoin d'aide, souviens-toi qu'un jour on t'a aussi aidé...et range tes balles en caoutchouc. 8-)

May Delphi be with you
0
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
30 mars 2003 à 13:38
Promis je range mes balles en caoutchouc mais je les gardes pres de moi, on sait jamais une rechute :-)

Bien sûr j'aide dans la mesure de mes moyens, mais je suis pas patient, car qd un gars il envoi 30 post, c assez enervant. Mais ca veut pas dire que j'aime pas aider !
Ca m'arrive, qd je peut... :-)

Merci et @+

-[!!!]- DeZNiUS -[!!!]-
0
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
31 mars 2003 à 16:48
La rechute, comme d'hab. Bon j'ai download la new version de RTFApi. Je la dezippe, j'essaye l'exemple, okay ca marche. Bon j'ouvre le projet du prog de demo. j'essaye de le compiler.

Comme d'hab, l'erreur pour la constante, bon je change en var, et j'ajoute dans initialisation 'RTFDllName := 'RTFApi.dll';
okay, jusqu'a la c bon.

Je compile, il se lance, c cool tt va bien. J'essaye de cliquer sur Fremdformat als RTF Laden... (charger un format etranger sous RTF -> en tres gros)... je selectionne un fichier RTF...

... et voila ce que j'obtient :Index de liste hors limite (-1) !

Bordel ! j'en est marre ! j'ai le meme delphi que toi ! et ca marche pas ! Quel WiNDOZE a-tu ? moi j'utilise WinXP ! croit tu que c du a ca ?

je pense sincerement que c du a cause de ca ! apres un debugging step by step, j'ai trouvé que c la meme ligne qui foire !

c encore :
Converter := ConverterList [OpenDialog.FilterIndex - 1];

qui foire !!! donc c sur ! c du a OpenDialog ! mais comment resoudre ce probleme sans reinstaller win98 ??

bon bah voila, si vous pouvez m'aider ca serai bien, parce que cet DLL, elle est vraiment extraordinaire ! elle fait tt les format ! chapeau bas a celui qui l'a fait !
Elle est vraiment exceptionnelle... et elle est freeware ! que demander de plus ???....

...quelle marche chez moi %-6

-[!!!]- DeZNiUS -[!!!]-
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
31 mars 2003 à 20:34
Es-tu sur que tu utilises bien la nouvelle DLL ?
As-tu essayé avec plusieurs fichiers RTF différents ?
As-tu installé les convertisseurs Microsoft ?
May Delphi be with you
0
DeZNiUS Messages postés 82 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 24 octobre 2003
31 mars 2003 à 20:41
Et bien j'ai download la new DLL (la 1.5 sur le site warehouse) le pire c que dans les infos de versions, il y a marqué 1.4, mais bon :-)

Ah, les convertisseurs microsoft ? c'est ca !!! je sais pas du tt si je les ai !
comment on fait pour savoir si on en a ?

-[!!!]- DeZNiUS -[!!!]-
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
31 mars 2003 à 21:12
Est-ce que tu vois quelque chose dans dans la liste quand tu cliques sur le bouton de droite du programme exemple ?
May Delphi be with you
0
Rejoignez-nous