Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1713 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++Builder] Récupérer un champ VarBinary(128) via un TField

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++Builder] Récupérer un champ VarBinary(128) via un TField

n°248259
antp
Super Administrateur
Champion des excuses bidons
Posté le 19-11-2002 à 11:48:07  profilanswer
 

Dans une BD j'ai un champ de type VarBinary(128)
Je fais la requête via un TADOQuery
J'accède au champ via FieldByNumber, ce qui me donne un TField* que je peux caster vers un descendant de TField ou utiliser une des méthode AsQqchose.
Comment je peux récupérer proprement ce champ binary, contenant entre 0 et 64 short int ¹, et mettre ça dans une zone mémoire de type short int machin[64] ?
J'ai essayé avec des Variants (AsVariant), mais une fois que les données sont dans le Variant je sais pas trop comment les transférer vers ma zone mémoire, donc le problème est +/- le même :D
 
¹ (je sais combien y en a, via un autre champ, mais de toute façon le champ a une taille fixe je suppose, même s'il n'est pas utilisé entièrement)
 
Je sens que comme d'habitude ça va être un bide :D


Message édité par antp le 19-11-2002 à 11:50:02

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le 19-11-2002 à 11:48:07  profilanswer
 

n°248360
antp
Super Administrateur
Champion des excuses bidons
Posté le 19-11-2002 à 13:45:48  profilanswer
 

On dirait qu'avec TField->GetData je peux récupérer ça, mais je sais pas si c'est la meilleure méthode
Enfin ça me donne les mêmes chiffres que ce que je vois avec le Query Analyzer de SQL Server, à savoir des chiffres bizarres :heink:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°248471
antp
Super Administrateur
Champion des excuses bidons
Posté le 19-11-2002 à 15:20:21  profilanswer
 

En fin de compte ça n'a pas l'air si bien comme solution... ça a tendance à faire tout planter :D
 
Pourquoi mes topics sont-ils toujours des bides :cry:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°248472
darklord
You're welcome
Posté le 19-11-2002 à 15:21:18  profilanswer
 

[:cupra]


---------------
Just because you feel good does not make you right
n°248762
antp
Super Administrateur
Champion des excuses bidons
Posté le 19-11-2002 à 17:41:42  profilanswer
 
n°249760
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-11-2002 à 16:57:43  profilanswer
 

[:thotho]


---------------
J'ai un string dans l'array (Paris Hilton)
n°250468
drasche
Posté le 21-11-2002 à 11:21:05  profilanswer
 

j'ai également une table avec des champs varchar binary (sous MySQL) et je n'utilise pas la méthode GetData mais la propriété Value.  Il me semble que le GetData est plutôt à utiliser sur des champs dont le type serait BLOB ou TEXT.  As-tu essayé?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°250476
antp
Super Administrateur
Champion des excuses bidons
Posté le 21-11-2002 à 11:27:05  profilanswer
 

J'ai essayé Value, mais ça me rend un Variant et ça je sais pas trop comment récupérer mes 64 short int :/
Par contre en le récupérant en tant qu'AnsiString ça peut passer, vu que ça donne une chaîne de 128 char, que je peux transformer en 64 short int, c'est ce que j'allais tester maintenant.
Dans la doc ils disent que GetData c'est justement pas pour les blob (pour lesquels il faut utiliser TADOBlobStream)


Message édité par antp le 21-11-2002 à 11:27:19
n°250481
drasche
Posté le 21-11-2002 à 11:32:00  profilanswer
 

en C j'aurais dit faire un pointeur et lire par paire de bytes mais en Delphi je sais pas trop, je connais pas assez :/


Message édité par drasche le 21-11-2002 à 11:32:12

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°250487
antp
Super Administrateur
Champion des excuses bidons
Posté le 21-11-2002 à 11:36:18  profilanswer
 

C'est en C++Builder, pas en Delphi ;)
 
on dirait que ça marche avec l'AnsiString
je récupère le champ dans une AnsiString
puis je fais :

Code :
  1. Values[i] = (((unsigned short int)ValuesStr[1+i*2]) << 8) | (unsigned short int)ValuesStr[1+i*2+1];


 
où Values = array de 64 short int et ValuesStr = chaîne de 128 char, sachant que la chaîne commence à l'index 1 (vu que AnsiString ça sert d'équivalent aux chaînes de Delphi)
Par contre je sais pas lequel des deux caractère je dois décaler vers la gauche, pcq avec ce truc little endian / big endian je ne m'y retrouve plus :crazy:


Message édité par antp le 21-11-2002 à 11:37:02
mood
Publicité
Posté le 21-11-2002 à 11:36:18  profilanswer
 

n°250489
drasche
Posté le 21-11-2002 à 11:38:06  profilanswer
 

ah ok autant pour moi j'avais même pas vu :D
 
sur plate forme x86, le poids le plus faible à gauche, le poids le plus fort à droite.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°250491
antp
Super Administrateur
Champion des excuses bidons
Posté le 21-11-2002 à 11:39:49  profilanswer
 

je sais, mais est-ce que dans la BD c'était stocké comme ça ? mystère :D
vais tenter comme ça, et si les valeurs sont trop bizarres j'inverse :o


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++Builder] Récupérer un champ VarBinary(128) via un TField

 

Sujets relatifs
Comment recuperer dans un .txt les adresses de ficiersfichier d'aide c++ builder 6
[ASP] Espace dans un champ de BDD, comment utiliser ?Meilleure solution pour récupérer des infos chez un hébergeur de site
[PHP/MySQL]Comment je fais pour récupérer la valeur que sum() créé ?[PHP] utiliser une fonction php dans le champ action d'une forme
recuperer la valeurs de select count(*)Récupérer l'objet Page courant ds une classe
recupérer l'identifiant d'un element qu'on vient de créer[C, C++] Récupérer l'enregistrement courant d'une requête
Plus de sujets relatifs à : [C++Builder] Récupérer un champ VarBinary(128) via un TField


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR