IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Connaitre contenu champs BLOB


Sujet :

Bases de données Delphi

  1. #1
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut Connaitre contenu champs BLOB
    Bonjour à toutes et à tous,

    Suite à cette evenement :
    http://www.developpez.net/forums/d11...rer-blob-hexa/

    Je créé un nouveau sujet pour bien identifier mon problème.

    Je suis face à une table ACCESS avec des champs de type BLOB dont je ne connais pas son contenue, je sais juste que ce n'est pas des images.
    Je tente donc de lire lire au format HEXA comme Shail le montre sur le précédent topic.

    Mais je récupère selon les champs ce genre de chose :
    0100010013004C6520312C20746F7573206C6573206D6F697301004D01000100000000000000FFFF
    ou
    2000
    et bien d'autre chose encore.

    J'ai tenté de convertir tous ceci en binaire pour avoir la traduction mais je ne vois toujours pas.

    Pour faire plus simple je vous ai préparé un projet avec un extrait de la base et la possibilité de tester le contenue, peut-être qu'une âme charitable arriverais à comprendre de quoi sont fait ces champs.

    http://rainconnu.free.fr/projet/blob.zip


    Pour répondre à la dernière remarque de Shail ssur le dernier topic, je n'ai pas réussi à lire la taille du blob avec les procédure que j'ai pu récupérer du net.


    Avez-vous une idée ?

  2. #2
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Re

    Grace à ce site :
    http://home2.paulschou.net/tools/xlate/

    Ma convertion fonctionne, donc le HexaString de Shaill marche trés bien.

    Bon il y a de drole de caractères en convertion text en fin de chaine
    0100010015004C6520312C20746F7573206C65732036206D6F697301004D06000100000000000000FFFF
    Donne
    Le 1, tous les 6 moisMÿÿ

    Le Mÿÿ qui proviens de 4D06000100000000000000FFFF reste un mystère.

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Si l'on étudie
    tu as "Le 1, tous les 6 moisMÿÿ"
    Pour les deux 01 00, je ne sais pas mais le 15 00 est intéressant !
    En Little endian (cas du x86), si c'est un nombre sur 2 octets, ça 00 15, qui donne 21 en décimal, et comme par hazard "Le 1, tous les 6 mois" est une chaine de 21 caractères !
    Tu as une structure binaire fortement typé, un peu comme les DFM en mode binaire !
    Il te faut la documentation pour exploiter ces données, sans, cela semble difficile !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Si l'on étudie
    tu as "Le 1, tous les 6 moisMÿÿ"
    Pour les deux 01 00, je ne sais pas mais le 15 00 est intéressant !
    En Little endian (cas du x86), si c'est un nombre sur 2 octets, ça 00 15, qui donne 21 en décimal, et comme par hazard "Le 1, tous les 6 mois" est une chaine de 21 caractères !
    Tu as une structure binaire fortement typé, un peu comme les DFM en mode binaire !
    Il te faut la documentation pour exploiter ces données, sans, cela semble difficile !
    Tout à fait, bien vu, j'avais également cela comme exemples

    Hexa
    1) 0100010026004368617175652031352053657074656D6272652C20746F75746573206C657320616E6EE9657301004101000F0000000000010053FFFF
    2) 0100010013004C6520312C20746F7573206C6573206D6F697301004D01000100000000000000FFFF
    3) 0100010016004C652032302C20746F7573206C65732033206D6F697301004D03001400000000000000FFFF
    4) 01000100250043686171756520312053657074656D6272652C20746F75746573206C657320616E6EE965730100410100010000000000010053FFFF

    Texte
    1) &Chaque 15 Septembre, toutes les annéesASÿÿ
    2) Le 1, tous les moisMÿÿ
    3) Le 20, tous les 3 moisMÿÿ
    4) %Chaque 1 Septembre, toutes les annéesASÿÿ

    Et si on raisonne sur ce que tu as dit
    1) 2600 donne 38 ne donne pas Length(&Chaque 15 Septembre, toutes les années) sauf si le & serais le soulignement de C du mot Chaque
    2) 1300 donne 19 qui donne bien Length(Le 1, tous les mois)
    3) 1600 donne 22 qui donne bien Length(Le 20, tous les 3 mois)
    4) 2500 donne 37 ne donne pas Length(%Chaque 1 Septembre, toutes les années) sauf si le % on le retire !! d'ailleur je vois pas sont utilité.

    Bon ici ce qui est génant c'est la fin qui change
    1) ASÿÿ
    2) Mÿÿ
    3) Mÿÿ
    4) ASÿÿ

    Vue lorsque je saisie dans le logiciel les infos je suis presque sur que M veux dire Mois et AS veux dire Années, je vais testé les autres périodes.

    Un grand merci à toi.

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    le & c'est justement le 38 !
    le % c'est évidemment le 37 !
    Tu ne connais pas ta table ASCII par coeur ?
    Donc il ne fait pas parti de la chaine, donc c'est bon, c'est bien la longueur !
    Tu peux donc te fier à cette information

    A et M, c'est la fréquence !
    lorsque c'est A, c'est "..., toutes les années"
    lorsque c'est M, c'est "..., tous les x mois"

    Comparons
    Code binaire : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    "Chaque 15 Septembre, toutes les années" et la fin 01004101000F00000000000100[B]53[B]FFFF
    "Le 1, tous les mois"                    et la fin 01004D01000100000000000000FFFF
    "Le 20, tous les 3 mois"                 et la fin 01004D03001400000000000000FFFF
    "Chaque 1 Septembre, toutes les années"  et la fin 01004101000100000000000100[B]53[B]FFFF

    On retrouve les informations en version binaire décrivant le texte !
    1 pour 0F ( = 15)
    1 pour 1
    3 pour 14 ( = 20)
    1 pour 1

    le 53 en cas d'année, ne serait-ce pas pour le nombre de semaine ???

    Il est très précis ce format, tout semble très détaillé !
    Contacte celui qui a fourni la Base de Données, il y a forcément une documentation sur le format !


    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    ....
    Il est très précis ce format, tout semble très détaillé !
    Contacte celui qui a fourni la Base de Données, il y a forcément une documentation sur le format !


    Je ne peux pas, malheureusement.

    De tout façon j'en connais beaucoup plus maintenant grace à toi.
    Cela me suffit largement mon premier objectif était de pouvoir faire un insert into avec une valeur par défaut, qui signisialise toujours pareil, comme l'exemple 2)

    Ton explication qui a suivi me permet même d'aller au delà à l'infini....

    Pour le coup du ASCII en fait, mon tableau ASCII est dans mes toilettes et quand j'ai écris cela, j'étais dans le salon...
    lol

    Merci @Shail.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-97] Connaitre contenu d'un champ d'un ssform2 depuis ssform1
    Par docjo dans le forum IHM
    Réponses: 6
    Dernier message: 19/08/2010, 22h04
  2. [MySQL] Lire / télécharger contenu PDF d'un champ BLOB
    Par domKr dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/06/2009, 15h36
  3. Réponses: 1
    Dernier message: 12/05/2007, 10h26
  4. voir un texte contenu dans un champ BLOB
    Par dibak dans le forum InterBase
    Réponses: 4
    Dernier message: 19/01/2006, 11h22
  5. Lister le contenu d'une table sans connaitre ses champs
    Par Google.be dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 30/03/2004, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo