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

Signaler
Messages postés
12
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
21 octobre 2005
-
Messages postés
12
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
21 octobre 2005
-
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

Messages postés
12
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
21 octobre 2005

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.
Messages postés
305
Date d'inscription
vendredi 18 juillet 2003
Statut
Membre
Dernière intervention
2 août 2010
2
Essai ceci

richTextBox1.Rtf=desi_rtf;

Théo
Messages postés
12
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
21 octobre 2005

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 }
Messages postés
305
Date d'inscription
vendredi 18 juillet 2003
Statut
Membre
Dernière intervention
2 août 2010
2
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
Messages postés
12
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
21 octobre 2005

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
Messages postés
305
Date d'inscription
vendredi 18 juillet 2003
Statut
Membre
Dernière intervention
2 août 2010
2
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
Messages postés
12
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
21 octobre 2005

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
Messages postés
305
Date d'inscription
vendredi 18 juillet 2003
Statut
Membre
Dernière intervention
2 août 2010
2
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
Messages postés
12
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
21 octobre 2005

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.
Messages postés
305
Date d'inscription
vendredi 18 juillet 2003
Statut
Membre
Dernière intervention
2 août 2010
2
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
Messages postés
12
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
21 octobre 2005

C un blob texte
Messages postés
305
Date d'inscription
vendredi 18 juillet 2003
Statut
Membre
Dernière intervention
2 août 2010
2
Désolé, j'abandonne vois avec ton fournisseur de ta BD...
Théo
Messages postés
12
Date d'inscription
lundi 18 juillet 2005
Statut
Membre
Dernière intervention
21 octobre 2005

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.