Récupération d'un blob pervasive et affichage dans un richtextbox

Résolu
minnexa Messages postés 12 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 21 octobre 2005 - 19 juil. 2005 à 10:48
minnexa Messages postés 12 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 21 octobre 2005 - 20 juil. 2005 à 16:47
Salut,
Je dois récupérer les enregistrements d'une table à partir d'une base de données Pervasive (v8) et les afficher dans un dataGrid. Mon problème est que l'un de mes enregistrements est une description contenue dans un champ BLOB. Pour garder sa mise en forme, je veux l'afficher dans un richTextBox. Pour l'instant, débutante en C#, je n'ai trouvé qu'un seul moyen :


string desi_rtf=Native.Trim(encoding.GetString(data,36,(data.Length-44)));


richTextBox1.Text=desi_rtf;



Mais le résultat n'est pas celui attendu, il me renvoie le code rtf sans l'interpréter :


17{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}}


{\colortbl ;\red0\green0\blue0;}


\viewkind4\uc1\pard\cf1\b\f0\fs20 un lot


\par }

Si quelqu'un a une idée, çà m'intéresse.
Merci d'avance

13 réponses

minnexa Messages postés 12 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 21 octobre 2005
20 juil. 2005 à 16:47
C bon, g trouvé. Parmi tous mes Rtf, quelques uns n'en étaient et bloqué l'affichage des autres. Il me suffit de tester et d'afficher en .rtf si c'en est ou un .text dans l'autre cas.
3
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
19 juil. 2005 à 11:35
Essai ceci

richTextBox1.Rtf=desi_rtf;

Théo
0
minnexa Messages postés 12 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 21 octobre 2005
19 juil. 2005 à 12:02
Merci, j'ai déjà essayé mais çà ne marche pas :

Format de fichier non valide !

En fait, le blob que je récupère a été créé à partir d'une appli magic et je me demande s'il ne crée pas un rtf à "sa sauce" et qui ne serait lisible que par magic. Car si je fais un savefile de mon enregistrement récupéré sous visual studio, il n'affiche pas le texte en rtf mais tout le code rtf.

17{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}}


{\colortbl ;\red0\green0\blue0;}


\viewkind4\uc1\pard\cf1\b\f0\fs20 un lot


\par }
0
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
20 juil. 2005 à 10:05
Déjà si '1 et '7' sont les premiers caractères de ton texte RTF
celui-ci est incorrect. Ton texte RTF doit commencer par {\rtf essai en
virant 17

Théo
0

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

Posez votre question
minnexa Messages postés 12 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 21 octobre 2005
20 juil. 2005 à 10:17
Sur certains enregistrements je n'ai pas de 17 :


{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}


\viewkind4\uc1\pard\f0\fs17 60\par


}

et j'ai toujours le meme probleme
0
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
20 juil. 2005 à 10:33
J'ai pris ton RTF et je l'ai mis dans un RichTextBox et j'ai vu 60 donc
ton RTF est correct. Ou visualise tu ton texte en RTF? Si c'est dans
une zone de ton datagrid, cette zone est un Textbox classique qui ne
gère pas le RTF.

Théo
0
minnexa Messages postés 12 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 21 octobre 2005
20 juil. 2005 à 10:41
Je le regarde dans un richtextbox. Mais je pense que c ma maniere de le recup qui est mauvaise :


byte[] byteDesiRtf=encoding.GetBytes(rtbDesignation.Rtf);


Buffer.BlockCopy(byteDesiRtf,0,data,38,byteDesiRtf.Length); //recup pour insertion dans ma db

et apres je le reaffiche par :


desi_rtf=Native.Trim(encoding.GetString(data,38,(data.Length-44))); //recup de ma db pervaise/btrieve

richTextBox1.Text=desi_rtf; //affichage dans ma richtextbox
0
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
20 juil. 2005 à 11:30
Déjà teste rtbDesignation.Rtf==
desi_rtf pour savoir si tu récupères bien ta valeur



et puis


richTextBox1.Rtf=desi_rtf;




Par contre je ne connais pas la BD Pervasive et je ne pourrais pas t'aider quant au mode de sauvegarde dans un blob
Théo
0
minnexa Messages postés 12 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 21 octobre 2005
20 juil. 2005 à 12:05
C'est ce que je fais déjà et si je fais un savefile, loadfile mon fichier rtf est juste. Le problème vient de l'enregistrement dans pervasive. Je dois lui transmettre un blob (string en .net) et raffiché ce blob (toujours string en .net) et là il m'affiche mon code rtf sans l'interpréter. Je suppose que çà vient du fait que je le transforme en string.
0
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
20 juil. 2005 à 14:05
Ton blob c'est un blob texte ou un blob binaire ? S'il s'agit d'un blob
binaire tu pourrais avoir des soucis quant au stockage et à la
récupération d'une chaine.

Théo
0
minnexa Messages postés 12 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 21 octobre 2005
20 juil. 2005 à 14:20
C un blob texte
0
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
20 juil. 2005 à 14:23
Désolé, j'abandonne vois avec ton fournisseur de ta BD...
Théo
0
minnexa Messages postés 12 Date d'inscription lundi 18 juillet 2005 Statut Membre Dernière intervention 21 octobre 2005
20 juil. 2005 à 14:26
En fait, je stocke bien mon rtf mais le probleme est que je ne sais pas comment interpreter mon rtf puisque le seul moyen que j'ai trouvé est de le recup en string. Bon, je te remercie quand meme. Je continue à chercher.
0
Rejoignez-nous