|
| Stocker un fichier avec memo dans un buffer |
| Iniciado por lacroix.atoo, 12,abr. 2019 16:43 - 4 respuestas |
| |
| | | |
|
| |
| Publicado el 12,abril 2019 - 16:43 |
Bonjour à tous,
J'ai la problématique suivante, j'ai besoin de stocker dans un buffer binaire un fichier HF complet (enregistrement et memo)
J'y arrive en créant un objet ou une structure et en sérialisant le tableau mémoire chargé mais j'aurais aimé le faire sans avoir besoin de déclarer la structure à partir d'un variant ou d'un tableau de variant afin de réaliser un outil générique, on passe le nom du fichier et point barre.
Manque de bol le fichierVersMemoire(MonVariant,Monfichier) ne fonctionne pas.
Charger directement le fichier à partir d'un fChargeBuffer n'est pas une solution, le fichier HF pouvant être hébergé sur un client/serveur.
Si vous avez une astuce, je suis preneur.
Merci d'avance,
Fred. |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
|
| Publicado el 12,abril 2019 - 17:12 |
Salut,
Ceci semble fonctionner, a adapter a tes besoin
HLitPremier("Configuration") gvTest est un Variant gsListeRubrique est une chaîne = HListeRubrique("Configuration", hLstRubrique) vFichier est un Variant POUR TOUTE chaîne sUneRubrique de gsListeRubrique SEPAREE PAR RC {"vFichier"+"."+sUneRubrique} = {"Configuration" + "."+ sUneRubrique} FIN
Mensaje modificado, 12,abril 2019 - 17:13 |
| |
| |
| | | |
|
| | |
| |
| Publicado el 14,abril 2019 - 11:29 |
Merci pour cette piste.
J'ai adapté ton code en remplaçant le hLstRubrique du hListeRubrique par hLstTout afin d'avoir aussi les clés et les mémos.
Mon tableau de variant se remplis bien, par contre la sérialisation binaire du variant ne prends pas en compte les rubriques "images".
La seule "astuce" que j'ai trouvé pour l'instant, c'est faire une compression gZip des rubriques mémo image (seules dont j'ai besoin pour l'instant).
Dans ce cas, cela sérialise correctement car le type de la rubrique est wlbuffer, si je ne compresse pas le membre variant prends automatiquement le type "image" et la sérialisation ne passe pas.
Je suis en WD23
<Code wd> PROCÉDURE INTERNE FichierVersBuffer(pFichier est une Source de Données) gsListeRubrique est une chaîne = HListeRubrique(pFichier,hLstTout) sUneRubrique est une chaîne vFichier est un Variant lTabVariant est un tableau de Variant HLitPremier(pFichier) TANTQUE PAS HEnDehors(pFichier) POUR TOUTE CHAÎNE sUneRubrique DE gsListeRubrique SEPAREE PAR RC SI {pFichier..Nom + "."+ sUneRubrique}..Type = 18 ALORS lImg est un Buffer = Compresse({pFichier..Nom + "."+ sUneRubrique},compresseGZIP) {"vFichier"+"."+sUneRubrique} = lImg SINON {"vFichier"+"."+sUneRubrique} = {pFichier..Nom + "."+ sUneRubrique} FIN FIN TableauAjoute(lTabVariant,vFichier) HLitSuivant(pFichier) FIN lBuffer est un Buffer Sérialise(lTabVariant,lBuffer,psdBinaire) RENVOYER lBuffer FIN </code wd>
Le 12/04/2019 à 15:12, "François C." a écrit :
Salut, Ceci semble fonctionner, a adapter a tes besoin // ex avec le fichier "Configuration" HLitPremier("Configuration") gvTest est un Variant gsListeRubrique est une chaîne = HListeRubrique("Configuration", hLstRubrique) vFichier est un Variant POUR TOUTE CHAÎNE sUneRubrique DE gsListeRubrique SEPAREE PAR RC {"vFichier"+"."+sUneRubrique} = {"Configuration" + "."+ sUneRubrique} FIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
|
| Publicado el 15,abril 2019 - 10:11 |
Et c'est surement la bonne façon de faire  |
| |
| |
| | | |
|
| | |
| |
| Publicado el 15,abril 2019 - 15:16 |
Le 15/04/2019 à 08:11, "François C." a écrit : > Et c'est surement la bonne façon de faire 
Oui, intégré et fonctionnel dans mon projet ... que du bonheur, la boucle en sens inverse permet la décompression et l'affectation dans le champ image.
Encore merci.
Fred. |
| |
| |
| | | |
|
| | | | |
| | |
|