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 :

Affectation dans un tableau dynamique


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 15
    Points : 16
    Points
    16
    Par défaut Affectation dans un tableau dynamique
    Bonjour,

    Alors voila ... ca fait des années que je n'ai pas utilisé les tableaux et la , je bloque sur un problème qui je suis sur est tout bête ...

    un service Web déclare une classe booking de la façon suivante (importation WSDL) :

    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
    Booking = class(TRemotable)
      private
        Fdate_beg: WideString;
        Fdate_end: WideString;
        Fid_booking: Integer;
        Fid_cnc: String_Array;
        Fversions: Int_Array;
        Fvisa: WideString;
      published
        property date_beg: WideString read Fdate_beg write Fdate_beg;
        property date_end: WideString read Fdate_end write Fdate_end;
        property id_booking: Integer read Fid_booking write Fid_booking;
        property id_cnc: String_Array read Fid_cnc write Fid_cnc;
        property versions: Int_Array read Fversions write Fversions;
        property visa: WideString read Fvisa write Fvisa;
      end;
      Booking_Array = array of Booking;    
      String_Array = array of WideString;           
      Int_Array  = array of Integer;

    Je dois passer à une fonction declare_booking un tableau de booking de la classe booking_array


    Je fais donc ma procedure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure xxx;
    
    var booking_list : booking_array;
    
    begin
    //j'initialise mon tableau
    Setlength(booking_list,length(booking_list) + 1 );
    // je tente de remplir le tableau
    booking_list[high(booking_list].date_beg:='01/01/2000';  // exemple
    // ET BADABOUM sur la ligne précédente DELPHI m'insulte "Violation d'accès à l'adresse XXXXX"
    la trace me dit bien que length(booking_list)=1
    et
    high(booking_list)=0 ....
    end;
    Bêtement je me dis que mon tableau n'est pas initialisé, et que lors de la première affectation ca plante , mais je ne comprends pas pourquoi !!!

    Les tutoriaux et forums que j'ai pu consulter ne m'ont pas permis de trouver le pourquoi de la chose ...

    Si quelqu'un peut m'éclairer ...
    MErci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 563
    Points : 25 165
    Points
    25 165
    Par défaut


    tu n'oublierais pas un Booking.Create
    C'est un tableau d'objet, il faut les instancier, ce n'est pas un problème de tableau mais d'objet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Setlength(booking_list,length(booking_list) + 1 );
    booking_list[high(booking_list] := Booking.Create();
    booking_list[high(booking_list].date_beg:='01/01/2000'; // exemple
    ... appel WS
    booking_list[high(booking_list].Free();
    tu verras normalement, les classes utilisant Booking_Array comme propriété, un Destroy qui libère les éléments du tableau, il a été généré par l'importateur WSDL, cela serait d'ailleurs plus propre d'encapsuler ton paramètre de WS par un objet unique (voir les options de l'importateur pour générer les objets de paramètres)

    mais ta booking_list semble être propre à ta fonction, tu devras explicitement faire les free !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Exact ca marche
    c'était bien un problème d'objet et pas de tableaux ...

    Re-merci pour la réponse

    Always the best .....

    A+

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

Discussions similaires

  1. [FPDF] problème avec les images dans un tableau dynamique
    Par GADSN dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 08/04/2009, 11h11
  2. Réponses: 6
    Dernier message: 26/12/2006, 17h01
  3. [SQL] Recupération Requete SQL dans un tableau dynamique PHP
    Par victor.jbju dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 13/09/2006, 16h48
  4. [Conception] Recuperer des données dans un tableau dynamique
    Par Tartanjet dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/09/2006, 00h28
  5. [VBA-E]Afficher tout dans un tableau dynamique croisé
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/03/2006, 13h09

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