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

VB 6 et antérieur Discussion :

Récuperation du contenu binaire d'une variable


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut Récuperation du contenu binaire d'une variable
    Je voudrais récuperer le contenu binaire d'une variable. Récuperer la valeur en mémoire
    Par exemple:
    dim x as integer;
    x=5;
    En mémoire le x n'a pas comme valeur 5 mais l'equivalent de 5 en binaire.
    Je ne veux pas utiliser une fonction de conversion mais lire directement la valeur en mémoire

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    J'ai bien peur que tu devras coder ta propre fonction de conversion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function IntToBin(valeur As Integer) As String
        ...
    End Function

  3. #3
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Citation Envoyé par laetous
    Je ne veux pas utiliser une fonction de conversion mais lire directement la valeur en mémoire
    zaza je croit bien qu'il ne veux pas utiliser les fonction de conversion, pourtant ca lui eviterais bien des nuits blanche. Ou alors c'est une commande special ??

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    qu'il nous dise déjà comment il fait pour lire en mémoire...

  5. #5
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    et quel en est l'interet

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    C'est elle et pas il!
    L'interet d'utilser le codage binaire est d'accélerer le traitement. Et oui je dois gerer des fichier assez volumineux et d'aprés mon patron il est préférable d'utiliser le contenu binaire des variables.

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par laetous
    C'est elle et pas il!
    L'interet d'utilser le codage binaire est d'accélerer le traitement. Et oui je dois gerer des fichier assez volumineux et d'aprés mon patron il est préférable d'utiliser le contenu binaire des variables.
    eu..... dans ce cas il faut utiliser l'assembleur... .. il sait ce que c'est le binaire .. ton boss..?

  8. #8
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Oui, si la vitesse d'exécution est primordiale, vaux mieux éviter VB. mais il faut savoir que ca ne va gagner que quelque milliemes de secondes / secondes ,voire moins, sur l'accès aux données en mémoire.

  9. #9
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par laetous
    C'est elle et pas il!
    Désolé, on ne pouvait pas savoir

    Citation Envoyé par laetous
    L'interet d'utilser le codage binaire est d'accélerer le traitement. Et oui je dois gerer des fichier assez volumineux et d'aprés mon patron il est préférable d'utiliser le contenu binaire des variables.
    et utiliser un langage interprété, ça ne le dérange pas, pourvu que tu utilises le codage binaire

    VB ne sait pas lire directement la mémoire sans passer par l'API Windows (genre CopyMemory) et l'execution d'une fonction API ne va pas révolutioner le temps de traitement par rapport à une fonction extrèmement simple, écrite en VB

    Restons les pieds sur terre

    Ou tu utilises l'assembleur, comme te l'a suggéré bbil, ou tu écris une fonction de 3-4 lignes, si tu veux vraiment traiter tes valeurs en binaire (comme on ne sait rien du traitement que tu veux faire, je fais des suppositions), ou tu traites tes valeurs telle que, ou .... tu m'envoies ton boss

  10. #10
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par laetous
    Je voudrais récuperer le contenu binaire d'une variable. Récuperer la valeur en mémoire
    Par exemple:
    dim x as integer;
    x=5;
    En mémoire le x n'a pas comme valeur 5 mais l'equivalent de 5 en binaire.
    Je ne veux pas utiliser une fonction de conversion mais lire directement la valeur en mémoire
    Là je comprends pas tout, et pourtant voilà plus de 25 ans que je fais de l'informatique...

    Quand on écrit X=5, VB range x dans la mémoire que Windows lui a attribué sous forme binaire (2 octets, et non pas un ou plusieurs caractères)

    Si j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim X as Integer, Y as Integer, Z as Integer
    X=5
    Y=20
    Z = X + Y
    le calcul s'effectue en mémoire avec ces valeurs binaires. Que je sache, il n'y a pas de conversion en ASCII avant de faire les calculs !!

    Alors que veut dire ce "Récupérer les valeurs en binaire" ?? On joue à ça en C éventuellement, quand on travaille avec des pointeurs, et qu'on veut récupérer des valeurs d'un type différent. Par exemple, si je veux transformer les deux premiers caractères d'une chaine en nombre entier, il faut effectivement que je "récupère" la valeur binaire de ce nombre entier.
    VB ne connaissant pas la notion de pointeur (tout au moins de façon explicite), il faut passer, comme il a été dit plus haut, par l'API Windows pour faire ce genre de gymnastique, ce qui revient à faire du langage C (avec tous les risques de plantage que ça implique si on joue mal avec les pointeurs).

    Mais pour faire du bête calcul numérique, alors là je ne comprends pas. Ce serait bien de connaître les tenants et aboutissants de ces variables...
    PS : PEEK et POKE, c'était il y a 20 ans !

  11. #11
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par ThierryAIM
    et utiliser un langage interprété, ça ne le dérange pas, pourvu que tu utilises le codage binaire
    Que je sache, depuis VB5 le langage n'est pas interprété mais compilé lorsqu'on utilise le .exe. Il n'est interprété qu'en environnement de développement - ce qui par ailleurs est très pratique pour le débogage - On en rêve en Visual C !

  12. #12
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par MGD_Software
    Que je sache, depuis VB5 le langage n'est pas interprété mais compilé lorsqu'on utilise le .exe.
    Alors pourquoi un exe VB a-t-il besoin d'un runtime pour fonctionner ?

  13. #13
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Je sais tout juste assez de choses en programmation pour avoir une vague idée de mon ingnorance dans ce domaine. Je programme maintenant depuis une trentaine d'années et, je pense pouvoir dire que vb est un compilateur, qu'un compilateur permet de se passer d'un interpreteur au momment de l'execution, et qu'un programme tournant sans interpreteur est un code compilé même s'il a besoin de dll pour fonctionner. L'autre alternative est un interpreteur qui prend un source et l'exécute.
    Maintenant on peut toujours disserter pour savoir si la dll est un interpreteur ou non. La mes connaissances sont insuffisantes

  14. #14
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par ThierryAIM
    Alors pourquoi un exe VB a-t-il besoin d'un runtime pour fonctionner ?
    Pour la même raison que VC a besoin de MSVCRT : il utilise des classes, et la définition de ces classes est dans les DLL qui vont bien.

    D'autre part un runtime n'est PAS un interpréteur : c'est la partie de code (compilée elle aussi) qui contient les bibliothèques, lorsque le langage n'incorpore pas celles-ci dans le code de l'exécutable.

    J'ai fait du langage C sur une machine qui nécessitait un runtime (Bill était encore en maternelle !). Et pourtant, j'utilisais bien un compilateur pour générer l'exécutable. Seulement, l'exécutable ne connaissait pas la machine sur laquelle il tournait et nécessitait un runtime pour avoir l'interface avec l'OS (bel exemple d'abstraction ! C'est comme si on écrivait le même programme pour Windows, Linux et Mac OS sans avoir à recompiler : seul le runtime diffèrerait)

    Je persiste : un exe VB6 est compilé : il suffit de lancer un desassembleur pour en être convaincu : on obtient du vrai code machine et non un Pcode quelconque. D'ailleur, quand Visual Studio est installé, une erreur dans l'exe lance le débogueur de Visual C. Comme le débogueur ne connait pas les sources VB, on se retrouve avec un magnifique listing en assembleur.

    Le passage en compilé de VB a été l'argument publicitaire "massue" de Microsoft lors de la sortie de VB5.

  15. #15
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    C'est simple et celà peut s'exposer de façon tout-à-fait primaire : VB n'est pas une partie (celle que l'on voit, notamment en éditant), mais un ensemble, qui inclut des dll. Si celles-ci sont de VB, elles font partie de VB....
    Elles le sont apparemment. Si tel n'était en effet pas le cas, il suffirait d'éditer et de se servir d'autres dll que celles de VB... ce qui n'est pas le cas (qui achèterait alors VB, sinon ?)

  16. #16
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Je reviens sur la discussion initiale (on s'est un peu égaré).
    Citation Envoyé par laetous
    L'interet d'utilser le codage binaire est d'accélerer le traitement. Et oui je dois gerer des fichier assez volumineux et d'aprés mon patron il est préférable d'utiliser le contenu binaire des variables.
    En relisant, le mot "fichier" a fait tilt (surtout en raison de la faute d'orthographe ). En fait, je pense que c'est dans la gestion de fichier que laetous souhaite utiliser du binaire. Dans ce cas, la question prend tout son sens: il est évident qu'utiliser un fichier binaire et y coller les deux octets d'un entier est nettement plus performant que d'inscrire sa valeur en ASCII dans un fichier texte.

    Dans ce cas, commencer par lire l'aide en ligne (et un bon manuel de Basic, ce sera plus efficace) sur la gestion des fichiers ouverts en mode Binary ou Random. Ensuite on en reparle...

  17. #17
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Bien vu MGD, je viens de relire le post, je pense que tu as raison. C'est le post originel qui nous a enduit d'erreurs

Discussions similaires

  1. Contenu binaire d'une image
    Par aliab dans le forum Apple
    Réponses: 1
    Dernier message: 15/11/2009, 01h11
  2. Récuperer le contenu pdf d'une page
    Par GrosBibi dans le forum ASP.NET
    Réponses: 8
    Dernier message: 06/01/2009, 19h09
  3. récupérer contenu fichier dans une variable
    Par kalyparker dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 02/07/2007, 18h10
  4. Réponses: 3
    Dernier message: 13/11/2006, 23h25
  5. Récuperation du code binaire d'une image dans une chaîne
    Par Nomely dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 27/01/2006, 19h01

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