Bonjour , je recherche de l'aide par rapport à une petite idée que j'aimerais utiliser dans un projet perso qui n'avance pas.
Dans ce projet , un peu typé : tableau , base de donnée , explorateur de fichier , j'utilse des tags , des qualificatifs pour décrire un fichier particulier.
J'ai donc par exemple un array[0..249] of boolean pour chaque entrée de la bdd
Au niveau de la sauvegarde de la pseudo bdd je me suis confronté au problème de la taille et du temps pris pour écrire ce fichier.les txt , les ini , les xmls etc ca ne collait pas et là aujourd'hui : "tilt":
l'array de bool ce n'est autre que des séries de 0100010010011110111
Bref du binaire....
Alors au lieu de stocker cette string je stocke sa représentation décimale
via un sympathique bintoint trouvé ici :
http://delphi.about.com/od/mathemati...aseconvert.htm
Bref génial l'écriture de la sauvegarde est 250X plus rapide et le fichier est 40X moins gros...
Le problème c'est que l'interprétation inverse ne marche pas:
voici la démarche:
*Lire la ligne en question (elle contient un longint qui représente l'array de boolean de manière encodée et compréssée , si vous avez suivit) readln
*la transormer en chaine binaire : strtoint() puis inttobin()
*lire char par char la chaine et convertir en bool selon les '0' ou '1'
Au niveau de la logique c'est superbe, mais ca ne marche pas.
La chaine binaire est à l'envers , c.a.d que dans mon logiciel il y a souvent
100110010010011 suivit de 235 '0' comme tous les tags ne sont pas définis.
Et lors de la transformation inverse je retrouve 235 '0' puis mon '100110010010011' d'origine.
Et pas moyen de faire ca correctement avec les strutils.
Quelq'un saurait il m'aider au niveau cette transformation et inverse de chaine binaire?
Quelqu'un connait il un composant qui permette de travailler au niveau des octets et en binaire ?
Sinon à la base c'est génial comme idée non ?Ca a déjà été fait et utilisé ?
Partager