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

Langage Delphi Discussion :

transformer un buffer non typé en string


Sujet :

Langage Delphi

  1. #1
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut transformer un buffer non typé en string
    Bonjour,

    j'ai besoin de récupérer le contenu d'un buffer non typé en chaine de caractères et je voudrais éviter de passer par un stream (voir code).

    Quelqu'un connait t'il un équivalent plus simple et rapide de la fonction suivante ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function BufferToString( Const Buffer, BufferSize: Integer): String; 
    Var 
      Astream : TMemoryStream; 
    Begin 
      AStream := TmemoryStream.create; 
      AStream.Write(Buffer, BufferSize); 
      AStream.Seek(0, SoFromBeginning); 
      Astream.read(Result[1], BufferSize); 
      AStream.Clear; 
      AStream.Free; 
    End;

    merci d'avance

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    ton buffer est de quel type ?
    utilise un pchar

    genre
    @+ Phil

  3. #3
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    C'est le problème, il peut être de type différent (integer, float, texte, boolean).

    je veux récupérer la chaine de caratère qui le compose et le stocker dans un string pour concaténer plusieurs données de type différent en gardant la taille pour la déconcaténation plus tard.

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    Tu as essayer ma solution ?

    @+ Phil

  5. #5
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    oui, mais çà n'a pas marché.

    par contre, j'ai trouvé ce que je voulais



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function BufferToString( Const Buffer, BufferSize: Integer): String; 
    Begin 
      SetLength(Result, BufferSize);
      move( Buffer, Result[1], BufferSize);
    End;

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    je n'avait pas comprit que tu voulait ne prendre qu'une parti du buffer

    @+ Phil

  7. #7
    bjl
    bjl est déconnecté
    Membre averti Avatar de bjl
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : Brésil

    Informations forums :
    Inscription : Décembre 2002
    Messages : 263
    Points : 338
    Points
    338
    Par défaut
    Je ne prend pas qu'une partie du buffer : je copie tout le buffer.

    move( Buffer, Result[1], BufferSize);

    buffer est la source
    result[1] est le premier octet du tableau de char du string
    et bufferSize est le nombre d'octets qui seront copiés par la fonction Move

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 19/10/2006, 12h02
  2. Réponses: 4
    Dernier message: 10/05/2006, 10h36
  3. code OK transformation en fonction non OK
    Par zulot dans le forum Langage
    Réponses: 1
    Dernier message: 01/04/2006, 21h05
  4. strlen et strcpy non reconnu avec string.h
    Par wolflinger dans le forum C++
    Réponses: 17
    Dernier message: 21/02/2006, 13h44
  5. Fichier typé et string
    Par nmathon dans le forum Langage
    Réponses: 4
    Dernier message: 13/01/2006, 15h55

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