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 :

Redimensionner un tableau dynamique


Sujet :

Delphi

  1. #1
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut Redimensionner un tableau dynamique
    Bonjour, j'ai un tableau du type array of array of TMyObject.
    Il faudrait que je puisse supprimer une colonne et une ligne qui sont à l'intérieur du tableau sans être aux extrémités.
    Je connais SetLength qui permet de redimensionner un tableau, mais il supprime les dernières colonnes et dernières lignes.

    Y-a-t-il un moyen de le faire en supprimer une colonne au milieu sans avoir à reprendre chaque élément un à un ?

    Question subsidiaire, si c'est faisable, peut-on le faire si on doit supprimer N colonnes et M lignes qui ne sont pas côte à côte sans avoir à créer NxM nouveaux tableaux ?

    Merci pour votre aide, car je ne vois que des solutions où il faut tout reprendre cellule par cellule.

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Citation Envoyé par WebPac
    Y-a-t-il un moyen de le faire en supprimer une colonne au milieu sans avoir à reprendre chaque élément un à un ?
    Ben... Non Tu es obligé de recopier chaque élément. Sauf peut-être que la routine Move te permettra d'aller un peu plus vite, mais ça n'empêche pas qu'il faudra déplacer toutes ces données.

  3. #3
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut
    Salut, j'ai vu qu'il existait la commande Copy qui copie une partie d'un tableau, je cherche avec pour voir si ça ne peut pas aider pour ne pas faire cellule par cellule mais plutôt bloc de cellules par bloc de cellules.

  4. #4
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut
    J'ai aussi trouvé la fonction Slice qui renvoie une partie d'un tableau, par contre, je n'ai pas encore trouvé comment concaténer un tableau ou affecter une partie de tableau.

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Que ce soit Copy ou Slice, tu auras toujours en retour une copie de ton Array initial.
    Si ton but est simlement de supprimer une ligne ou une colonne de ton Array, à mon avis ce n'est pas la meilleure approche.

    Implémenter deux méthodes DeleteRow et DeleteCol, qui agissent directement sur ton array, n'est pas très difficile à mettre en place.

    @+ Claudius

  6. #6
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut
    Si j'obtiens une copie de mon tableau avec mes lignes et colonnes en moins, c'est parfait, peut importe que je le fasse sur le tableau ou sur une copie.

    Au final, vu que je ne pense pas qu'on puisse concaténer, je me suis mis à faire un code élément par élément. Mon soucis étant surtout le fait de devoir retirer N lignes et M colonnes et ne voudrais pas refaire trop de boucles inutilement.
    Je viens de commencer le code et espère arriver à faire le code en seulement 1 boucle en ligne et 1 boucle en colonne.

    On verra lorsque le code sera achevé.
    Merci en tout cas pour votre soutien.

  7. #7
    Membre confirmé Avatar de WebPac
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 947
    Points : 512
    Points
    512
    Par défaut
    Ben en fait, ça ne se fait pas si difficilement que ça en prenant 2 variables qui comptent les décalages.

    Je mets [Résolu].

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

Discussions similaires

  1. [XL-2010] Redimensionnement d'un tableau dynamique et perte de données VBA
    Par awa123 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/08/2014, 23h54
  2. [Free Pascal] Redimensionner un tableau dynamique en un tableau statique
    Par tekthoninks dans le forum Free Pascal
    Réponses: 5
    Dernier message: 22/03/2009, 23h38
  3. Réponses: 1
    Dernier message: 03/05/2007, 09h15
  4. Comment redimensionner un tableau dynamique ?
    Par Mickey.jet dans le forum Langage
    Réponses: 13
    Dernier message: 07/09/2006, 19h16
  5. Réponses: 4
    Dernier message: 13/05/2002, 17h43

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