Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Voila encore une question basique : comment supprimer une case d'un tableau. ( pas de null hein! reduire d'une case le tableau, en plus c'est la derniere a supprimer. ) Creer un nouveau tableau?
Ex :
String array [12] array[1] = 'a' array[2] = 'b' ... array[12] = 'z' ... //traitement pour la modif ... if upperbound (array) <> 11 then // bah c'est pas bon... end if
Hors ligne
ce n'est pas plus simple de faire ?
long ll_count
ll_count = upperbound(array) - 1
Hors ligne
Il n'y a pas de moyen simple, la gestion des tableaux en PB reste assez basique.
Solution : crée un second tableau de taille n-1, affecte chaque élément voulu dans une boucle, puis affecte le nouveau tableau (la variable tableau entière, sans crochets) dans l'ancien.
C'est pas très esthétique comme technique... Tu n'aurais pas moyen de faire autrement, en gérant ta taille maxi dans une variable au lieu d'utiliser UpperBound() par exemple ?
{edit : caramba, pas assez rapide !}
Dernière modification par FMolinas (21-06-2007 14:27:31)
Hors ligne
je suis pas sur d'avoir compri...
Je ne veux pas recupérer -1 sur le upperbound(), je veux que mon tableau fasse réellement une case de moins.
J'ai pour l'instant fait cette technique de création d'un second tableau, mais je trouve ca vraiment moyen et pensais pouvoir faire ca dynamiquement.
Hors ligne
FMolinas a écrit:
Il n'y a pas de moyen simple, la gestion des tableaux en PB reste assez basique.
N'oublies pas que la DW est.... un tableau !
Une DW externe dans une datastore et tu as toutes les méthodes révées de gestion de tableau : tri, ajout, suppression, filtre, recherche, etc...
PB n'est pas si mal finalement
Hors ligne
Chrnico a écrit:
FMolinas a écrit:
Il n'y a pas de moyen simple, la gestion des tableaux en PB reste assez basique.
N'oublies pas que la DW est.... un tableau !
Une DW externe dans une datastore et tu as toutes les méthodes révées de gestion de tableau : tri, ajout, suppression, filtre, recherche, etc...
PB n'est pas si mal finalement
bien joué !
Je ne veux pas recupérer -1 sur le upperbound(), je veux que mon tableau fasse réellement une case de moins.
c'est si dur d'utiliser une case en moins ?
Hors ligne
Tu peux toujours te faire un petit "NVO maison" du genre n_collection (cf collection Java) avec les méthodes de bases qui accepte tout type d'éléments (types standards, objets systèmes, objets utilisateur)
Pour info pour l'utilisation de la datastore avec des types standards (chaines, nombres, dates) l'idée est de déclarer les colonnes suivantes dans le DWO
* Integer : n° d'ordre (1,2,.....,n)
* String : index ('id1','id2',....'idn') (=> pour indexer par des chaines au besoin)
* String : type de données
* String : valeur de la donnée convertie en chaine (=> pour les setter et getter il faudra convertir/déconvertir en fonction du type de donnée )
Inconvénient de l'utilisation de la datastore avec les objets : possible uniquement pour les objets maison pour lesquels on peut définir les méthodes serialize et unserialize de transformations objet <-> chaine.
(à moins de rajouter un tableau d'objets en plus en instance du dw control)
Hors ligne