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 :

Récupérer des données binaire d'un LONGBLOB avec libmysql.dll et mysql.pas


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Récupérer des données binaire d'un LONGBLOB avec libmysql.dll et mysql.pas
    Salut à tous,

    Voilà alors dans un programme en Delphi je stocke un chaine de caractères représentant des données binaire dans un LONGBLOB et mon problème survient lorsque je veux récupérer ces données : ma chaine est coupée dès que le caractère 0x00 arrive...
    J'ai pour le moment réussi à contourner le problème en utilisant la fonction HEX() pour lire mes donnée puis en convertissant logiciellement ma chaine hexadécimale en chaine de caratères...
    Celà a tendance à ralentir un peu mon soft, c'est la raison pour laquelle je fais appel à vous pour savoir s'il n'existerai pas une fonction mysql permetant de récupérer directement une chaine incluant des caractères nuls.
    Après avoir déja discuté de ce problème dans la rubrique Mysql du forum, il en ressort que le problème ne vient apparement pas de Mysql mais de la façon dont j'utilise Delphi. Peut être que l'API Mysql de Delphi (libmysql.dll et mysql.pas) n'est pas adaptée pour ce que je veux faire...
    Je suis ouvert à toute sollution

    Merci d'avance

    ++

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    En fait je viens de trouver tout seul la sollution, je dois transférer mes données dans un PansiChar et non pas dans un string

    Parcontre à partir je n'arrive pas à passer du PansiChar à un Stream, auriez vous une sollution pour ça ??

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    Comme quoi la persévérence ça paye, j'ai finalement résolu mon problème !

    Je prends la peine de poster ma solution... on sait jamais, ça peut toujours servir à quelqu'un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    procedure TformMain.getpicture(name:string);
    Var
      stream:TMemoryStream;
    begin
      stream:=TMemoryStream.Create;
      if mysql_query(mysqlconnection, pChar('SELECT (picture),length(picture) FROM pictures WHERE name = ''' +name+''';'))=0 then
      begin
        myres:=mysql_store_result(mySQLconnection);
        if myres.row_count<>0 then
        begin
          myrow:=mysql_fetch_row(myres);
          Stream.Size := StrToInt(myrow^[1]);
          Move(myrow^[0]^, PChar(Stream.Memory)[0], Stream.Size);
          stream.Seek(0,0);
          Jpg.LoadFromStream(stream);
          BmpDst.Assign(Jpg);
          Image_user.Picture.Bitmap := BmpDst;
          Image_user.Visible:=True;
        end
        else
        begin
          Image_user.Visible:=False;
        end;
        mysql_free_result(myres);
      end
      else
      begin
        Image_user.Visible:=False;
      end;
      Stream.Free;
    end;
    A bientôt !

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 904
    Points : 6 027
    Points
    6 027
    Par défaut
    Merci !
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/02/2010, 12h39
  2. [XL-2003] Récupérer des données d'une page internet avec login
    Par yoyo_l dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/08/2009, 22h58
  3. Comment récupérer des données enregistrées avec Rapid File ?
    Par didmarj2a dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/03/2008, 09h49
  4. Réponses: 1
    Dernier message: 31/01/2007, 11h59
  5. Réponses: 10
    Dernier message: 11/01/2007, 08h54

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