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 :

Manipulation pointeur delphi


Sujet :

Langage Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Manipulation pointeur delphi
    Bonjour,

    je voudrais récupérer un bloc d'octet en memoire. Pour ce faire g un pointeur de structure, un déplacement par rapport au début de la struture et le nombre d'octet a récupérer.
    J'ai procéder de la mnière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Function GetTAPIStructString(ptrTapistruct:pointer; offset, length :Integer):String;
    var
    buffer : array of Byte;
    begin
    If length < 1 Then
      Exit; //'handle erroneous input
    If offset<>0 Then
      begin
        setLength(buffer,length);
        CopyMemory( buffer, ptr(integer(@ptrTapistruct)+offset) , length);
        Result:= string(buffer);
        end;
    End;
    Ca compile mais le résultat obtenue n'est pas celui attendue.
    Est ce que je procède de la bonne manière et ce qui va pas c une mauvaise gestion de la mémoire ou est ce que je fait n'importe quoi

    Merci d'avance a+

    Balises de code ajoutées par Pierre Castelain.
    Pensez-y à l'avenir.

  2. #2
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Je ne vais pas répondre à la dernière question pour ne pas te vexer
    L'utilisation que tu fais de CopyMemory n'est pas bonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      CopyMemory(buffer[0], Pointer(integer(ptrTapistruct)+offset) , length);
    Ca devrait aller mieux comme ça (j'ai supposé que ptrTApiStruct contient l'adresse de la châine en mémoire).

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Résolu : Manipulation pointeur delphi
    Merci c'est cool ça fonctionne sauf qu'il fauf mettre

    CopyMemory(buffer, Pointer(integer(ptrTapistruct)+offset) , length);

    le buffer[0] passe pas.

    Merci en encore

  4. #4
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Non, je me suis trompé, mais il ne faut pas passer directement buffer car il s'agit d'un pointeur vers un tableau dynamique et non vers un tableau statique (classique). Le code devrait dont être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      CopyMemory(@buffer[0], Pointer(integer(ptrTapistruct)+offset) , length);
    Il faut passer l'adresse du premier élément du tableau sinon tu vas écraser le pointeur du tableau dynamique.

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

Discussions similaires

  1. Instanciation d'objet et manipulation pointeurs
    Par cpElement dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/07/2011, 18h20
  2. Manipulation pointeurs
    Par melleb dans le forum C
    Réponses: 6
    Dernier message: 06/04/2010, 11h39
  3. Manipulation pointeur avec ctypes
    Par ledannois dans le forum Interfaçage autre langage
    Réponses: 0
    Dernier message: 03/02/2010, 20h14
  4. Petite question pointeurs Delphi
    Par peter27x dans le forum Langage
    Réponses: 4
    Dernier message: 06/01/2009, 15h57
  5. [BIGINT dans Firebird] comment les manipuler dans Delphi ?
    Par kase74 dans le forum Bases de données
    Réponses: 4
    Dernier message: 30/08/2004, 11h11

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