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

C++ Discussion :

DLL Delphi OutPut ShortString in C++


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Par défaut DLL Delphi OutPut ShortString in C++
    Bonjour a tous,
    j'ai une DLL créer en Delphi qui me renvoi un ShortString. Exemple en c++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ShortString MaVariableShortString;
    MaFonction(MaVariableShortString);
    il devrait me renvoyer une chaine de caractere dans MaVariableShortString mais il me fai une violation d'accès. Alors j'ai mit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PChar MaVariablePChar;
    MaVariablePChar = StrAlloc(255);
    MaFonction(MaVariablePChar);
    cela fonctionne mais il me renvoie une partie de ce qu'il devrait m'envoyer et entourés de caractères inconnus.... Quelqu'un voit l'erreur? Quelqu'un connait un autre équivalent a ShortString sous C++?? Merci d'avance

  2. #2
    scr
    scr est déconnecté
    Membre éprouvé
    Inscrit en
    Juin 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 127
    Par défaut
    Je ne connais pas DELPHI mais d'après ce que j'ai pu lire, le premier caractère du shortstring contient le nombre de caractère de ta chaine.
    Il te suffit de faire un petit traitement:
    - Suppression du premier caractère
    - Ajout d'un caractère '\0' a la fin de ta chaine
    pour extraire la partie qui t'intéresse...

  3. #3
    Membre éclairé
    Homme Profil pro
    conseil et développeur en informatique industrielle
    Inscrit en
    Janvier 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : conseil et développeur en informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2006
    Messages : 220
    Par défaut
    je confirme :
    en delphi, le premier caractere(ou plutot octet) d'une chaine est sa longueur.
    et le terminateur n'est pas 0 comme en C
    faut creuser le probleme dans ce sens..

  4. #4
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Par défaut
    Oui la première ne correspond pas, ok. Mais pour initialiser la variable PChar je dois faire StrAlloc(255)??? Comment je l'initialise avec la bonne taille et la met a null...

  5. #5
    scr
    scr est déconnecté
    Membre éprouvé
    Inscrit en
    Juin 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 127
    Par défaut
    j'allouerai plutot 256 octet : le premier octet est le nombre de caractère, sachant qu'il peut y en avoir jusqu'a 255

    ensuite essaie un truc du style:

    BYTE *b;
    char *s;

    b=(BYTE*) MaVariablePChar;
    s=MaVariablePChar+1;
    s[*b]='\0';

    Et tu devrais retrouver ta chaine dans s

  6. #6
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Par défaut
    Merci pour vos réponse. Cela ne fonctionne toujours pas. Il me renvoie qu'une partie mais si je créer une deuxieme variable PChar il me renvoie toute la chaine... Il y a un problème d'allocation mémoire.... Quelqu'un a un exemple d'initialisation?

  7. #7
    scr
    scr est déconnecté
    Membre éprouvé
    Inscrit en
    Juin 2005
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 127
    Par défaut
    Citation Envoyé par BATiViR Voir le message
    Cela ne fonctionne toujours pas. Il me renvoie qu'une partie mais si je créer une deuxieme variable PChar il me renvoie toute la chaine
    Tu peux préciser...

    On peut voir le code et les résultats que tu obtiens...

  8. #8
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 185
    Par défaut
    Après de nombreux test j'ai trouver mon erreur. Quand j'initialise ma variable char.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char MaVariableChar[256] = ""
    si j'initialise pas avec = "" il va dans d'autres zone mémoires et mélange tout... Merci pour votre aide.

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

Discussions similaires

  1. DLL Delphi utilisée sous VB.NET
    Par slimjoe dans le forum Langage
    Réponses: 2
    Dernier message: 09/01/2006, 00h12
  2. [VB.NET] Comment gérer une DLL Delphi ?
    Par slimjoe dans le forum VB.NET
    Réponses: 2
    Dernier message: 09/01/2006, 00h10
  3. Utiliser Dll Delphi
    Par smyley dans le forum MFC
    Réponses: 9
    Dernier message: 12/03/2005, 18h21
  4. Réponses: 2
    Dernier message: 28/10/2003, 10h55
  5. Declarer une dll Delphi ?
    Par DelphiCool dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 10h07

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