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.NET Discussion :

Sqlite - lecture d un blob contenant un tableau de valeurs


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut Sqlite - lecture d un blob contenant un tableau de valeurs
    Salut,

    En utilisant la ref System.Data.SQLite j arrive a me connecter a ma SQLite database, ainsi que lire les données qui ne sont pas des blobs. Mais j ai un probleme pour la lecture de blob ...

    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
     
    Dim dbFile As String
            dbFile = "C:\Copy of Network_NEW_HP.db "
     
            Dim SQLconnect As New SQLite.SQLiteConnection()
            SQLconnect.ConnectionString = "Data Source=" & dbFile & ";"
            SQLconnect.Open()
     
            Dim SQLcommand1 As SQLiteCommand
            SQLcommand1 = SQLconnect.CreateCommand
     
            SQLcommand1.CommandText = "SELECT * FROM nodeattributes where node_id=2 and attribute_id=66"
     
            Dim SQLreader1 As SQLiteDataReader = SQLcommand1.ExecuteReader()
            While SQLreader1.Read()
                Dim node_id As Integer = SQLreader1(0)
                Dim attribute_id As Integer = SQLreader1(1)
                Dim mStream As New System.IO.MemoryStream
                Dim pData() As Byte = DirectCast(SQLreader1(2), Byte())
                'Dim bm(,) As Double = Convert.ToDouble(pData)
                'mStream.Dispose()
     
                Console.WriteLine(node_id & vbTab & attribute_id)
                Console.WriteLine(pData)
     
            End While
     
            SQLcommand1.Dispose()
            SQLconnect.Close()
    Je suppose que le blob doit etre lu comme un vecteur de byte (voir la variable pData dans le code ci-dessus, mais je n arrive pas a comprendre comment convertir c bytes en un tableau de valeurs.

    Je ne sais pas si ca va aider a comprendre mon probleme, mais par exemple en python la solution pour lire mon blob serait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import sqlalchemy.types
    import sqlite3
    import sqlalchemy
    import pickle
     
    cnx = sqlite3.connect("C:/Copy of Network_NEW_HP.db")
    cur = cnx.cursor()
    cur.execute("""SELECT * FROM nodeattributes where node_id=2 and attribute_id=66""")
    blob = cur.fetchone()[2]
    if blob !=None:
        v= pickle.loads(str(blob))
        print v
    Ce qui me retourne le resultat :

    [[ 50.]
    [ 50.]
    [ 50.]
    [ 50.]
    [ 50.]
    [ 50.]
    [ 50.]
    [ 50.]
    [ 50.]
    [ 50.]
    [ 50.]]
    Mais voila, je voudrais pouvoir faire de meme en vb.net ...

    J espere que quelqu un saura m aider

    Merci

    Slumpy

  2. #2
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Salut,
    byte() est déjà un tableau.
    Il manque donc plutôt l'info sur le type d'origine du blob. A quoi correspondent les données ? Une image ? Un fichier quelconque ? Une chaine de texte ? Un tableau d'entier plutôt que de byte ? etc...

  3. #3
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    Salut,
    byte() est déjà un tableau.
    Il manque donc plutôt l'info sur le type d'origine du blob. A quoi correspondent les données ? Une image ? Un fichier quelconque ? Une chaine de texte ? Un tableau d'entier plutôt que de byte ? etc...
    Salut,

    Merci d avoir pris la peine de repondre, c sympa.
    Par contre, je comprends pas trop ta question. Dans le cas precis, le blob est la chaine de 50 de mon premier message.

    Slumpy

  4. #4
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Pour faire simple, un blob c'est forcément un tableau de byte (tableau d'octet si tu préfères).
    Mais tout objet, quel qu'il soit, est forcément également un tableau d'octet, puisqu'il est en mémoire. En .Net on obtient l'équivalent d'un objet en tableau d'octet via la sérialisation binaire. Mais pour retrouver l'objet d'origine il faut connaitre son type réel.

    Exemple
    dim v as string = "hello" ca donne la même chose en mémoire que
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim v as Byte() = new Byte(6)
    v(0) = 104 ' h
    v(0) = 101 ' e
    v(0) = 108 ' l
    v(0) = 108 ' l
    v(0) = 111 ' o
    v(0) = 0 ' NULL

    Autre exemple :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    dim v as Integer = 255
    ca donnera :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim v as Byte() = new Byte(4)
    v(0) = 0
    v(0) = 0
    v(0) = 0
    v(0) = 255

    Comme tu le vois, on peut passer d'un tableau d'octet a un objet et vice versa, mais si je tente de convertir le second exemple en une string, j'obtiendrai n'importe quoi.

    D'où ma question : quel est le type d'origine du blob ?
    Ou si tu préfère, qu'est-ce qui est écris dans ce blob ?

  5. #5
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    Salut ctxnop,

    Merci pour ces explications. Pour expliquer un peu plus mon probleme. Je ne suis pas celui qui a mis les valeurs a l interieur du blob. Tout ce dont j ai accés est un programme exterieur qui a rempli la base de données SQlite (que je ne sais pas vraiment lire etant donné que je suis assez pourri en python ...), et la base de données "pleine". Mon but est de ressortir des infos de cette base de donnée.

    Comme je l ai dis dans mon post initial, j ai reussi a faire ca en python (apres pas mal de galeré et une aide du forum : voir ici), mais voila, je souhaiterais pouvoir faire la meme chose en .net ...

    Je ne suis pas sur que je vais repondre a ta question, mais dans le cas present, mon blob est un vecteur d une dimension avec 118 valeurs decimales (les fameux 50 de mon post initial).

    Désolé de parraitre neuneu ... et encore merci pour ton aide.

    Slumpy

  6. #6
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    J'ai survolé l'autre post, de ce que j'ai compris, personne n'a su dire ce que contenait le blob avec exactitude. A priori il s'agirait d'un objet python sérialisé en binaire.
    Si c'est bien ca, il n'est donc pas possible de le dé-sérialiser autrement qu'avec Python (ou alors faut prendre les sources de Python pour regarder comment il sérialise les objets pour écrire un algo de dé-sérialisation correspondant, ca me semble peine perdue).

  7. #7
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    re ctxnop,

    Effectivement dans la version python je n ai pas besoin de donner la structure exacte du blob. Je ne fais qu utiliser "pickle.loads(str(blob))" pour convertir le blob.

    mais si par exemple je te dis que le blob contient disons:
    Dim v(5) As Double
    v(0) = 50.0
    v(1) = 50.0
    v(2) = 50.0
    v(3) = 50.0
    v(4) = 50.0
    v(5) = 50.0
    Est ce que tu saurais comment de la lecture du blob Dim pData() As Byte = DirectCast(SQLreader1(2), Byte()), je peux remonter a ces valeurs ?

    Est ce que ma question a un sens ?

    Merci

    Slumpy

  8. #8
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    En admettant qu'il s'agit d'un tableau de Double tu pourrais peut être utiliser ce code :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim values as Double() = Nothing
    Using ms as new MemoryStream()
        ms.Write(pData, 0, pData.Length) ' Ecrit les données dans un flux mémoire
        ms.Seek(0, SeekOrigin.Begin) ' Se replace en début de flux
        dim fmt as new BinaryFormatter()
        values = DirectCast(fmt.Deserialize(ms), Double())
    End Using

    System.IO pour le MemoryStream, System.Serialization.Formatters.Binary pour le BinaryFormatter.

    Ce code ne tient absolument pas compte du fait qu'il est probable que la désérialisation échoue, que le nombre d'octets de pData soit ou non un multiple du nombre d'octet d'un double, etc...

  9. #9
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    Salut ctxnop,

    Merci pour ton morceau de code. Effectivement j obtiens l erreur suivante :

    "The input stream is not a valid binary format. The starting contents (in bytes) are: 80-02-63-6E-75-6D-70-79-2E-63-6F-72-65-2E-6D-75-6C ..."
    sur la ligne du CastDirect ...

    (juste pour etre sur, tu voulais dire System.Runtime.Serialization.Formatters.Binary je suppose ? Il ne reconnait pas System.Serialization.Formatters.Binary.

    J avoue que tu me perds quand tu dis :
    le nombre d'octets de pData soit ou non un multiple du nombre d'octet d'un double, etc...
    Ne pourrais je pas utiliser mon code python pour obtenir l information qu il semble te manquer (je dis ca comme ca car je ne comprends pas exactement ce qu il manque ) pour pouvoir recuperer les valeurs contenu dans le blob ?

    Merci encore

    Slumpy

  10. #10
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Citation Envoyé par Slumpy Voir le message
    juste pour etre sur, tu voulais dire System.Runtime.Serialization.Formatters.Binary je suppose ? Il ne reconnait pas System.Serialization.Formatters.Binary.
    Oui oui, c'est bien System.Runtime.[...]

    Citation Envoyé par Slumpy Voir le message
    J avoue que tu me perds quand tu dis :
    C'est simple, si on part du principe que la donnée réelle est un tableau, cela signifie qu'il y a X valeurs dans pData. Si ce sont des "int", un "int" fait 4 octets, pData doit donc impérativement fait X*4 octets. Sinon cela signifierai qu'une des valeur n'est pas complète, ce qui est impossible lors d'une sérialisation.

    Peut-être que ce n'est pas des Double mais plutot des float ?

    Le truc c'est qu'en python tu fais pickle.load() pour obtenir ta valeur, et on ne sait absolument pas du tout quels traitements la méthode effectue sur pData pour en obtenir ton tableau.

    Avec de la chance elle ne fait rien de particulier et donc on peut espérer une sérialisation binaire sur un type de base (int, float, double, ...), mais on a aucune garantie.

    Peut être que pData est un objet contenant des informations à destination de la méthode pickle.load en plus de la donnée elle-même. Auquel cas il faudrait d'abord virer ces données ou les utiliser si elles ont une signification utile a ton cas.

    Il faudrait regarder le code interne de cette méthode pour en reproduire l'intégralité. Ce qui risque fort d'être très dur et long.

  11. #11
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    Re ctxnop,

    Je ne sais pas si ca va aider au shmilblic, mais avec python j ai utilisé le code suivant :

    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
    import sqlalchemy.types
    import sqlite3
    import sqlalchemy
    import pickle
     
    cnx = sqlite3.connect("C:/Copy of Network_NEW_HP.db")
    cur = cnx.cursor()
    cur.execute("""SELECT * FROM nodeattributes where node_id=2 and attribute_id=66""")
    blob = cur.fetchone()[2]
    #print blob
    #print
    if blob !=None:
        v= pickle.loads(str(blob))
        print v
        print type(v), len(v), type(v), v.itemsize
    La difference par rapport a mon premier post est que je lui demande d afficher de nouvelles choses apres avoir lu le blob, dont len(v) et v.itemsize

    Le resultat obtenu est:

    <type 'numpy.ndarray'> 118 <type 'numpy.ndarray'> 4
    d apres ce que j ai lu ici :
    array.itemsize¶
    The length in bytes of one array item in the internal representation.
    Je suppose donc que mon blob est composé de 118 elements chacun de 4 bytes ?

    Si je comprends bien 4 bytes signifie deja que ca ne peut pas etre des doubles c ca ?

    J ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim values As Single() = Nothing
                Using ms As New MemoryStream()
                    ms.Write(pData, 0, pData.Length) ' Ecrit les données dans un flux mémoire
                    ms.Seek(0, SeekOrigin.Begin) ' Se replace en début de flux
                    Dim fmt As New BinaryFormatter()
                    values = DirectCast(fmt.Deserialize(ms), Single())
                End Using
    c'est a dire en changeant la declaration de value pour etre un single et le Directcast. Mais j obtiens la meme erreur.

    Je sais aussi que ces valeurs ne sont pas des entiers donc pas int.


    Slumpy still fighting !

    Merci.

  12. #12
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    J'aurais plutôt tenté en float.

    Mais bon, la on voit que la donnée d'origine est un numpy.ndarray, dont les éléments sont des valeurs codées sur 4 octets (tu t'es gourré dans ton print, tu affiche deux fois le type de v, alors qu'il aurait fallut afficher le type de v, puis le type d'un élément contenu dans v)

    Donc non seulement on ne sait pas comment pickle sérialise la valeur, mais en plus la valeur n'est pas un simple tableau.

    Avec un peu de recherche on trouve rapidement ca : http://docs.python.org/library/pickl...-stream-format

    Autrement dit, la sérialisation de pickle n'est pas une bête copie des octets de la mémoire, elle suit un protocole.
    Il va donc falloir suivre ce protocole, défini par la PEP307 : http://www.python.org/dev/peps/pep-0307/

    Tout ca pour obtenir un numpy.ndarray, ce qui n'existe pas en .Net, du coup il faudrait aussi créer un équivalent de la classe définie ici : http://docs.scipy.org/doc/numpy/refe...y.ndarray.html

    On en revient donc a ce que je dis depuis le début : très dur et très long.

  13. #13
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    salut ctxnop,

    Arf de bon matin mauvaise nouvelle Ca y est tu m as achevé ... Je jete l eponge. Ca m aurait bien aidé pourtant de pouvoir faire ca en vb.net ...

    Derniere question de noob ... Comment tu declare un float en vb.net ???
    (J avais aussi essayé Decimal).

    En tout cas, merci d avoir pris de ton temps pour repondre a chacun de mes posts.

    Slumpy

  14. #14
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Citation Envoyé par Slumpy Voir le message
    Derniere question de noob ... Comment tu declare un float en vb.net ???
    (J avais aussi essayé Decimal).
    Hum, je dois avouer que j'en sais trop rien, je ne fais pas de VB, j'ai horreur de sa syntaxe, je fais tout en C#. Je n'avais même jamais remarqué que float n'existait pas en VB. A priori Single est l'équivalent, donc ton choix devait être le bon.

    Mais pourquoi avoir besoin de faire ca en vb.net plutôt qu'en python ?
    A la limite, tu pourrais feinter un peu en faisant le truc en 2 étapes :
    1 - Créer dans ta base une table de mappage qui reprend clé primaire + un champs blob.
    2 - Créer un script python dont le but est d'enregistrer "convenablement" le blob
    3 - Utiliser ton programme en .net en s'assurant qu'il utilise la table de mappage pour extraire le blob

    Le but du script python serait donc de lire le blob avec pickle.load + numpy.ndarray, puis d'écrire dans la table de mappage les données telles qu'elles sont réellement (donc les éléments un a un).
    Du coup, ca deviendrait dé-sérialisable par n'importe quel langage de programmation.

    C'est a mon avis le plus simple et le plus rapide. D'autant qu'il doit y avoir moyen de lancer ton script python depuis ton exe .Net

  15. #15
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    A priori Single est l'équivalent, donc ton choix devait être le bon
    Vi, voila pourquoi j avais tenté Single.

    Mais pourquoi avoir besoin de faire ca en vb.net plutôt qu'en python ?
    Ca va etre un peu long a expliquer, mais en gros :
    Deja faut savoir (mais t as du le remarquer) que je ne suis pas dutout informaticien. Je suis un scientifique qui a appris/apprends ca sur le tas ... Donc ma rigueur en programmation est assez ... bancale. C'est un peu du 'tant que ca fait ce que je veux, je suis content ..."
    Ayant dis ca, je maitrise quand meme bcp plus le .net que le python. Je me suis interessé au python que pour cette histoire de lecture de base SQLite, quand j ai cru comprendre que ct plus facile en python ...
    Maintenant, il s avere que l on voudrait developper notre "outil" plus avant que ce qu on avait envisagé au debut et me retrouve a developper tres lentement et etre limité a cause du language que je maitrise moins ...
    Donc repartir en .net si cela etait possible me ferait gagner du temps ...
    De plus, mon collegue ne pompe rien au python et n a pas envi de s y plonger, alors qu il connait vb.net.

    A la limite, tu pourrais feinter un peu en faisant le truc en 2 étapes :
    1 - Créer dans ta base une table de mappage qui reprend clé primaire + un champs blob.
    2 - Créer un script python dont le but est d'enregistrer "convenablement" le blob
    3 - Utiliser ton programme en .net en s'assurant qu'il utilise la table de mappage pour extraire le blob
    Ok, je pense que je comprends ce que tu conseilles. Tu veux dire, que du coup, je controlerais la maniere dont le nouveau blob est enregistré et du coup je pourrais le recuperer en vb.net ?

    D'autant qu'il doit y avoir moyen de lancer ton script python depuis ton exe .Net
    Justement je commencais a me demander si ct po ca la solution. J ai entendu parler de ironpython, tu connais ?

    Slumpy

  16. #16
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    Je vois, bah pour le coup, ca me semble plus rapide d'apprendre le python que de tenter une implémentation du pickle et du ndarray en .net
    A moins qu'il existe déjà quelque chose pour ca ? A chercher, je n'en sais rien, je ne pratique pas le python (bon, un tout petit peu pour bidouiller des scripts d'admins pour mon serveur linux, mais ca s'arrête la).

    A propos de ma feinte, oui, c'est ca que je voulais dire, le nouveau blob tu es maitre de la façon dont il est sérialisé, donc tu peux coder quelque chose en .net pour le désérialiser. Mais garde a l'esprit que c'est vraiment de la bidouille, du bricolage, mettre un truc pareil en prod c'est fortement déconseillé.

    IronPython, je connais de nom, jamais utilisé. Cependant ca ne semble pas correspondre a ton besoin. IronPython est une implémentation de la syntaxe python pour permettre d'utiliser dans le même programme des librairies python et .net, mais le programme reste écrit en syntaxe python, donc ca n'avance a rien puisque vous cherchez, toi et ton collègue, a avoir une syntaxe VB.Net.

    Cependant, il est peut être possible d'en tirer quelque chose, si ce que j'ai en tête fonctionne :
    écrire un assembly en IronPython permettant (dé)sérialisation via pickle+ndarray. En gros faudrait écrire en IronPython deux fonctions, une pour passer d'un List<T> du .net à un ndarray correspondant, plus dump via pickles, l'autre fonction faisant l'inverse.
    Du coup tu te retrouverai avec un assembly .net que tu pourrais référencer dans ton projet en VB.Net et l'utiliser pour effecter cette conversion.
    Si ca fonctionne, ca serait beaucoup plus propre comme solution que le coup du script de re-sérialisation du blob.

    Moi je dis, IronPython est opensource, c'est gratuit, ca vaut le coup de tenter. Surtout que tu sera vite fixé sur la faisabilité du truc.

  17. #17
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    Salut ctxnop,

    désolé de ne pas avoir repondu hier .... ct journee marathon de mon coté ...

    Cependant, il est peut être possible d'en tirer quelque chose, si ce que j'ai en tête fonctionne :
    écrire un assembly en IronPython permettant (dé)sérialisation via pickle+ndarray. En gros faudrait écrire en IronPython deux fonctions, une pour passer d'un List<T> du .net à un ndarray correspondant, plus dump via pickles, l'autre fonction faisant l'inverse.
    Du coup tu te retrouverai avec un assembly .net que tu pourrais référencer dans ton projet en VB.Net et l'utiliser pour effecter cette conversion.
    Si ca fonctionne, ca serait beaucoup plus propre comme solution que le coup du script de re-sérialisation du blob.
    Ouaip, c'est ce que je me disais. Neanmoins ca risque d'etre dur avec mes connaissances Je vais voir si je suis assez courageux ...

    Merci encore pour ton aide

    Slumpy.

Discussions similaires

  1. [Tableaux] Lecture d'une variable contenant plusieurs arrays
    Par MightyDucks dans le forum Langage
    Réponses: 10
    Dernier message: 27/03/2006, 12h40
  2. [Oracle][JDBC]Lecture / Enregistrement de BLOB
    Par bonnefr dans le forum JDBC
    Réponses: 2
    Dernier message: 09/03/2006, 11h33
  3. Erreur lors de la lecture d'un blob
    Par guille007 dans le forum DB2
    Réponses: 3
    Dernier message: 07/03/2006, 16h37
  4. Delphi: Lecture d'un fichier avec un tableau dynamique
    Par grégoire2 dans le forum Langage
    Réponses: 8
    Dernier message: 10/02/2006, 18h50
  5. Réponses: 1
    Dernier message: 07/11/2005, 08h11

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