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

Delphi Discussion :

passage de TStream de Delphi à C++


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Points : 12
    Points
    12
    Par défaut passage de TStream de Delphi à C++
    J'ai un dll écrite avec Builder C++ dans laqu'elle j'ai une classe qui met permet de sauvegarder un fichier dans une base de donnée. Cette classe utilise donc naturellement un TStream en entrée.

    Cependant, lorsque j'utilise cette dll depuis mon programme delphi, lorsque mon objet c++ veux acceder au TStream que Delphi lui a fourni, j'obtient une belle EAV
    Violation d'accès à l'adresse 00000000. Lecture de l'adresse 00000000
    C'est la premiere fois que j'obtient une erreur pareil avec des objets VCL.
    la gestion des stream serait-elle différentes entre delphi et c++ builder ? comment faire dans ce cas la ?

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 612
    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 612
    Points : 25 303
    Points
    25 303
    Par défaut
    Une Classe Delphi passé à un programme BC++B ???

    Tout à fait possible si c'est compilé avec les paquets d'execution partagé par les deux programmes, mais cela ne doit pas être évident ... car même entre deux DLL delphi, si tu les compiles en tout intégré, la classe TObject va être l'adresse $1245678 et dans l'autre $87654321 ... donc déjà incompatible, le coup classique du message "ne peux pas convertir TFont en TFont" des ActiveX qui ne partage pas le même BPL ...

    Pourquoi ne pas fournir un simple Handle de fichier ou Pointer sur Mémoire ... le partage d'objet ... hum ...

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 612
    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 612
    Points : 25 303
    Points
    25 303
    Par défaut
    Oups Doublon de message, ... bon j'en profite pour compléter ...

    Sinon tu passes ton objet sous la forme d'un entier "Integer(MonObjet)" et tu le transtype à la sauvage à la réception "TStream(MonIntegerDObjet)" ...

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    oui mais non, c'est pas un problème de casting

    je vais essayer de voir au niveau des paquets d'execution...

  5. #5
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Sinon, ce qui est plus propre, c'est d'utiliser une interface IStream, avec TStreamAdapter en complément

    Mais il faut avoir la main sur le code C++ pour utiliser un IStream plutôt qu'un TStream.

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    j'ai déja lu un truc du genre quelque part

    par contre j'ai pas réussi a l'implementer ...

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par KangOl
    j'ai déja lu un truc du genre quelque part

    par contre j'ai pas réussi a l'implementer ...
    faut aussi dire que j'ai pas bcp chercher...

    et une recherche google adéquate m'a mis sur la voie ...
    je tente ca demain...

    note pour moi meme : utiise _di_IStream du coté C++

Discussions similaires

  1. [Lazarus] Passage d'un code Delphi en Lazarus
    Par JP.NUAGE dans le forum Lazarus
    Réponses: 5
    Dernier message: 28/01/2014, 17h25
  2. Réponses: 12
    Dernier message: 15/04/2008, 12h47
  3. [DELPHI 7&INTERBASE 1.5.2] Passage de parametres laborie
    Par Black_Angel23 dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/06/2005, 17h20
  4. Passage de variables de DELPHI vers RAVE
    Par e120650 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/02/2005, 12h17
  5. [VB6]Passage d'un tableau dans une DLL écrite en delphi
    Par flash dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/09/2002, 10h15

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