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 :

Caster en array of Byte


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 180
    Points : 107
    Points
    107
    Par défaut Caster en array of Byte
    Bonjour,

    Je voudrais juste savoir comment on peut caster un TObject en "Array of Byte"

    D'avance merci

    Ben

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 865
    Points : 11 333
    Points
    11 333
    Billets dans le blog
    6
    Par défaut
    ça n'a pas de sens !!!

    que veux-tu faire avec ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 561
    Points : 3 951
    Points
    3 951
    Par défaut
    Salut

    A titre d'exemple :

    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
     
    type
      PArr = ^TArr;
      TArr = array of Byte;
    var
      i: Integer;
      S1, S2: String;
    begin
      S1 := '';
      S2 := '';
      for i := 1 to UserLogon.ClassType.InstanceSize do
      begin
        S1 := S1 + Format('$%2.2d ',[PArr(UserLogon)^[I]]);
        if PArr(UserLogon)^[I] in [32..255] then
          S2 := S2 + Chr(PArr(UserLogon)^[I])
        else
          S2 := S2 + '.';
      end;
      ShowMessageFmt('Size = %d'#10'Caract: %s'#10'Binaire: %s',[UserLogon.ClassType.InstanceSize,S2,S1]);
    UserLogon est un objet quelconque.
    Fais des tests et fais signe s'il y a un problème.

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  4. #4
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    En fait ce que tu veux c'est mettre dans un tableau les octets de l'instance d'un objet, c'est ça ? C'est pour faire quoi au juste ?

    Je pose la question parce que peut-être est que c'est de la sérialisation que tu cherches à faire. Dans ce cas c'est dans TRemotable que tu devrais orienter tes recherches.

    Peut-être aussi est-ce que ton objectif est de stocker l'objet (son instance) dans une base de donnée. Dans ce cas, il est possible d'utiliser la méthode WriteComponentRes de TStream qui permet de passer un composant dans un stream. Voici un exemple : http://www.scalabium.com/faq/dct0065.htm

    Enfin, si t'es d'humeur à jouer dans la mémoire directement j'imagine qu'il t'est possible de lire l'octet à l'adresse de l'objet et de lire tous les octets suivants sur une longueur de InstanceSize. Une fois fait, je ne sais pas ce que tu pourrais en faire toutefois.

    Je n'ai pas énormément d'expérience sur ces forums mais une chose est certaine : les personnes qui donnent beaucoup de détails sur leurs intentions relativement au problème qu'ils rencontrent profitent généralement de l'expertise de ceux qui ont rencontré le même problème et qui ont trouvé la solution. En d'autres mots : non seulement c'est une bonne idée d'être précis dans ta question mais aussi sois le dans ton objectif final. Tes chances d'avoir une réponse fiable ne peuvent que décupler .

    Bon dev!
    -Slimjoe

Discussions similaires

  1. Socket send array de byte
    Par miss11 dans le forum Réseau
    Réponses: 3
    Dernier message: 26/10/2007, 20h46
  2. Limite supérieure « Array de Bytes »
    Par DarkVader dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 10/08/2007, 12h04
  3. Réponses: 5
    Dernier message: 18/11/2005, 22h11
  4. [Array][String]byte[]
    Par beb-mbs dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 25/08/2005, 06h16
  5. [Type] alternative a "array of byte"
    Par Clorish dans le forum Langage
    Réponses: 2
    Dernier message: 12/07/2005, 11h59

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