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

Web & réseau Delphi Discussion :

[IdTcpServer]Envoi d'objet ou record avec Stream


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2002
    Messages : 213
    Par défaut [IdTcpServer]Envoi d'objet ou record avec Stream
    Bonjour, vous parait il possible d'envoyer un record contenant des Stream ou un objet via IdTcpClient vers IdTcpServer?

    Voici un lien de mon ancien post demandant +- la même chose, aujourd'hui j'aimerais simplifer la procédure d'envoi de message et envoyer un reocrd complet ou un objet.

  2. #2
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Le seul souci c'est que si on joue avec des pointeur (ie objets, classes) on ne copie via le record que les adresses et non les contenus.

    On est de toute maniere obligé de copier "a la main" les property des classes, les contenu des streams, les valeurs de strings ......

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Par défaut
    Dans la FAQ, tu as un excellent exemple de passage de record avec les composants Indy rédigé par notre ami Reisubar

    http://delphi.developpez.com/faq/?pa...0envoyerstruct

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2002
    Messages : 213
    Par défaut
    Citation Envoyé par Clorish Voir le message
    Le seul souci c'est que si on joue avec des pointeur (ie objets, classes) on ne copie via le record que les adresses et non les contenus.

    On est de toute maniere obligé de copier "a la main" les property des classes, les contenu des streams, les valeurs de strings ......
    Aie, en effet, les pointeurs ne sont pas les bienvnus dans l'envoi d'informations

    Citation Envoyé par PpPool Voir le message
    Dans la FAQ, tu as un excellent exemple de passage de record avec les composants Indy rédigé par notre ami Reisubar
    Oui, je l'utilise pour le moment mais le problème c'est que j'envoi plusieurs fichiers et j'aimerais ne faire qu'un seul envoie afin de faciliter la compréhension.

    Comment pourrais je inclure des stream dans le record?

  5. #5
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Rien t'empeche de creer un TMemoryStream que tu remplie avec l'enemble des donnes a envoyer, puis envoyer en bloc le stream memoire.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2002
    Messages : 213
    Par défaut
    L'idée me parait excellente!

    Je vais essayer de mettre cela en musique mais j'avoue avoir un peu de mal avec les stream, enfin surtout avec le compréhension au tour du sujet

  7. #7
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Bha les stream c'ets pas compliqué en fait.
    Imagine ca comme un simple tableau d'octets (byte) dynamqiue.

    Tu as un integer (4 octets) ? ben copier ton integer dans ce "tableaux" a partir de l'indice "10" reviens a occupper les indiche 10, 11, 12, et 13 avec le contenu de l'integer.

    Un autre entier suivant celui ci sera donc stocké des indices 14 a 17.

    Sinon pour manipuler un TStream (il en exite plusieurs sorte : TMemoryStream, TFileStream, TStringStream) i lfaut connaitre peu de choses :

    Position : indice courrant dasn le "tableau" c'est a partir de cet indice que sera ecrit les prochaines donnees (quitte a ecraser des donnees)
    Size : Taille du "tableau". Elle augmente au fure et a mesure qu'on ecrit, en fonction de ce qu'on ecrit. LA reduire, supprime des donner qui depasse, l'augementer permet de "pre-alouer" de l'espace memoire rempli avec du vide.
    Write/Read : ecrit/lit une donnée. le parametre size permet de savoir combent on lit/ecrit d'octets. Exemple : Read(IntValue, SizeOf(Integer))
    Seek : permet de se deplacer dans le fichier. Equivalent a une affectation de position. le 2e parametre permet de se deplacer du debut, de la fin ou de la position courrante ...
    CopyFromStream : Permet de copier N bits d'un stream dans un autre a aprtir de Position (dans les 2 stream). S'assurer de la bonne valeur de "position".

    Pour plus d'infos, ... n'hesite pas

Discussions similaires

  1. Problème d'envoi d'objets au serveur avec gson
    Par Karly dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 23/07/2012, 01h48
  2. Réponses: 0
    Dernier message: 19/03/2010, 17h33
  3. Envoi d'objet avec une socket
    Par HamzuS The Great dans le forum VB.NET
    Réponses: 4
    Dernier message: 06/09/2009, 15h09
  4. Pb d'envoie de mail en ASP avec un objet CDO
    Par mister_rom dans le forum ASP
    Réponses: 1
    Dernier message: 02/04/2007, 22h56
  5. Envoi de messages MS DOS avec le IP
    Par asphp dans le forum Développement
    Réponses: 6
    Dernier message: 07/01/2004, 16h11

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