FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Bataille terrestre
déclarer une var tableau dont on ne connaît pas la taille Emptypar Marc Aujourd'hui à 16:20

» item_index
déclarer une var tableau dont on ne connaît pas la taille Emptypar Marc Aujourd'hui à 16:13

» SineCube
déclarer une var tableau dont on ne connaît pas la taille Emptypar Marc Hier à 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
déclarer une var tableau dont on ne connaît pas la taille Emptypar Marc Hier à 12:22

» Philharmusique
déclarer une var tableau dont on ne connaît pas la taille Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
déclarer une var tableau dont on ne connaît pas la taille Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
déclarer une var tableau dont on ne connaît pas la taille Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
déclarer une var tableau dont on ne connaît pas la taille Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
déclarer une var tableau dont on ne connaît pas la taille Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
déclarer une var tableau dont on ne connaît pas la taille Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
déclarer une var tableau dont on ne connaît pas la taille Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
déclarer une var tableau dont on ne connaît pas la taille Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
déclarer une var tableau dont on ne connaît pas la taille Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
déclarer une var tableau dont on ne connaît pas la taille Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
déclarer une var tableau dont on ne connaît pas la taille Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -39%
Ordinateur portable ASUS Chromebook Vibe CX34 Flip
Voir le deal
399 €

 

 déclarer une var tableau dont on ne connaît pas la taille

Aller en bas 
+3
JL35
Klaus
ambroise
7 participants
AuteurMessage
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyJeu 14 Juin 2012 - 13:58

Bonjour,

Comment faites-vous pour déclarer une variable tableau alors que vous ne connaissez pas sa taille du fait que celle-ci dépendra d'un nombre d'enregistrements à créer dans le programme ?

Déclarez-vous une taille "au pif" ?

Je vous remercie.
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyJeu 14 Juin 2012 - 14:30

Je fais ceci:
Code:

dim taille_tableau%
...
' on charge la taille selon les besoins
taille_tableau% = 205
on supprime le tableau s'il existe déjà
if variable("mon_tableau%")=1 then delete mon_tableau%
' on crée le tableau
dim tableau%(taille_tableau%)

ça marche évidemment avec 1 ou 2 dimensions, avec des tableaux d'entiers, de flottants ou de chaînes.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyJeu 14 Juin 2012 - 14:33

Soit tu attends de connaître le nombre d'enregistrements avant de déclarer ton tableau, soit tu le dimensionnes largement à l'avance, je ne vois pas comment on peut faire autrement, il n'y a pas de Redim en Panoramic.

On s'est croisés Klaus, effectivement, supprimer et redimensionner, ce qui revient à ma première solution.

Mais si le nombre d'enregistrements varie dans le temps, et qu'il faut rajouter des éléments dynamiquement, je ne vois pas comment on peut faire !
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyJeu 14 Juin 2012 - 14:38

Et dans ce cas, passer par une dlist par exemple pour vider le tableau avant de le supprimer puis le recharger avec les valeurs de la Dlist si on doit en garder les valeurs.
Chose à ne pas négliger pour les tableaux variables même si personnellement je n'en ais pas encore le reflexe, utiliser directement une DLIST comme un tableau à taille variable selon les usages
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyJeu 14 Juin 2012 - 14:41

Non, JL35, mais comme j'ai dit dans mon post précédent, il y a:
dim taille 1... delete suivi de dim taille 2
ce qui équivaut à un redim.

Bien sûr, les anciennes données sont perdues. S'il faut garder les données et réellement agrandir un tableau, il faut passer par une sauvegarde:
Code:

dim i%,n%, taille_tableau% : taille_tableau% = 30
dim mon_tableau%(taille_tableau%)
...
' on charge le tableau.
...
' on veut l'agrandir:
dim sauvegarde_tableau%(taille_tableau%)
for i%=0 to taille_tableau%
  sauvegarde_tableau%(i%) = mon_tableau%(i%)
next i%
delete mon_tableau%
n% = 390
dim mon_tableau%(n%)
for i%=0 to taille_tableau%
  mon_tableau%(i%) = sauvegarde_tableau%(i%)
next i%
delete sauvegarde_tableau%
taille_tableau% = n%
...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyJeu 14 Juin 2012 - 14:43

Ben oui, ou comme dit Jicehel, le Dlist qui lui n'a pas de limite pour remplacer le tableau, on n'y pense pas assez et c'est beaucoup plus léger (élégant) comme solution.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyJeu 14 Juin 2012 - 14:56

Exact. C'est une bonne solution car l'extension est automatique. Mais deux problèmes, et de taille: tu ne peux pas avoir des cellules vides, et tu n'as qu'une dimension.

avec un tableau, tu peux faire ceci:
dim x%(30),y$(20)
x%(17)=3
y$(12)="abc"

Toutes les autres cellules de x% ont la valeur 0, et toutes les autres cellules de y$ contiennent une chaîne vide. Mais ces éléments sont définis. Pour faire la même chose avec un DLIST, il faut faire autant de item_add que cellules prévues, avant de pouvoir accéder à la n-ième.

Et de plus, pour remplacer une valeur dans un dlist, il faut d'abord supprimer la ligne par item_delete, puis la réinsérer au même endroit par item_insert.

La DLIST est un outil génial, mais son utilisation diffère de celle d'un tableau. Ce dernier est fait pour un accès aléatoire en lecture/écriture, alors que les DLIST sont fait pour des traitements séquentiels d'un nombre inconnu d'enregistrements (tous des chaînes de caractères, soit dit en passant, pas de flottants ou entiers sans passer par val() en lecture et str$ en écriture).
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyJeu 14 Juin 2012 - 14:59

Tu as raison, ce n'est pas l'idéal pour tous les cas, et il y a des impossibilités (plusieurs dimensions), ou tout au moins des difficultés, l'accès est séquentiel en écriture, ce qui n'est pas le cas du tableau. Et le contenu est alphanumérique.
Revenir en haut Aller en bas
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyJeu 14 Juin 2012 - 19:07

Merci pour toutes ces idées... Il me faut maintenant faire mon choix...
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
papydall

papydall


Nombre de messages : 7009
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyJeu 14 Juin 2012 - 22:37

Salut à tous.

Moi, n’étant pas aussi savant que vous, je déclarerais mon tableau avec une dimension très largement plus grande que ce que j’estime que mon tableau pourra contenir. C’est une solution brutale ; c’est du gâchis de la mémoire ; mais ça marche.

Si panoramic disposait du type pointeur pour permettre la gestion dynamique des données, ça sera merveilleux. Peut-être que ça ne tardera pas à venir et la nouvelle version apportera-t-elle la surprise !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyVen 15 Juin 2012 - 8:18

Bonjour,

Oui, j'y avais pensé. Mais ce n'est pas très adapté à mon programme. En effet, le tableau est construit à partir d'un nombre de données stockées dans un fichier. Et ce fichier est rempli par l'utilisateur. Et nul ne sait jusqu'où l'utilisateur pourra enrichir le fichier !
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyVen 15 Juin 2012 - 8:43

Es-tu sûr d'avoir besoin d'avoir la totalité du fichier en mémoire simultanément ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyVen 15 Juin 2012 - 9:35

Si c'est pour ce que je pense, un enregistrement par l'utilisateur.
Dans ce cas, le DLIST peut faire l'affaire (à priori, d'après les contraintes que je vois à première vue)
A chaque fois que l'utilisateur rajoute quelque chose tu le rajoute dans la DLIST
Comme dis plus haut, il faut choisir la solution la plus adapté à ton besoin en étudiant bien avant de quoi tu as besoin et les traitement que tu vas appliquer à ce tableau. (Eventuellement aussi comme disait Klaus, s'il enregistre de manière plus ou moins importante un certains nombre d'éléments d'une même structure, tu peux enregistrer dans un fichier chaque "éléments" quand il est fini et le transmettre à la fin avec tous les entregistrements).
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyVen 15 Juin 2012 - 9:39

Bonjour,
Comme dis Klaus, si tu n'a pas besoin d'avoir la totalité du fichier en mémoire, tu peux très bien utiliser les commandes FILEBIN_#### pour créer ton fichier.
après pour le chargement/sauvegarde d'un enregistrement tu utilises les commandes FILEBIN_BLOCK_###

et pour parcourir ton fichier, pour récupérer un enregistrement en particulier : FILEBIN_POSITION



EDIT : Oublie ce que j'ai écris, les commandes FILEBIN_### sont limitées à des tableaux d'octets. Ce qui est très limitatifs lorsque l'on veut sauvegarder des valeurs numériques (index de l'enregistrement suivant par exemple) et des chaines de caractères...(ou alors il faut monter une usine à gaz) Wink

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyVen 15 Juin 2012 - 10:53

Salut à tous,

@Ambroise, je ne sais pas exactement ce que tu veux faire mais je te propose une alternative => pas de tableaux. C'est plus compliqué à mettre en place, mais une fois que as fait tes routines çà roule bien.

Code:
' Routine de recherche d'un élément (r$) dans un fichier pour en extraire
' la ligne complète, suivant sa position (pos_r) dans la ligne.Cette ligne
' est inscite dans un nouveau dlist. La routine vérifie toutes les lignes de fc$

dim r$:r$="Jean Claude":' C'est l'élément à rechercher dans fc$
dim pos_r:pos_r=3:' C'est la position de l'élément sur la ligne
label rsf,rech_string_fic:' les label(s)

dim a,a$,b$,e$,ls,n,n1,n2,nba,nbe,s$:' variables pour dec_string
s$="|":label dec_string

width 0,1040:list 1:width 1,500:height 1,200:label resultat:' juste pour présenter le résultat
list 90:width 90,500:left 90,520:' pour travailler sur le fichier fc$
list 91:width 91,500:top 91,220:width 91,500

dim fc$:fc$="test.txt":' fichier de test
label cre_fich:gosub cre_fich: ' création du fichier
gosub rech_string_fic:' on fait la recherche

END: ' _________________________________________________________________________
rech_string_fic:
file_load 90,fc$
for n=1 to count(90)
a$=item_read$(90,n)
nba=0:ls=len(a$):a=instr(a$,s$):b$=a$
e$=mid$(a$,1,a-1):if pos_r=1 then goto rsf
nba=1
repeat
    ls=ls-a:b$=mid$(b$,a+1,ls):a=instr(b$,s$):nba=nba+1
    if a=0
      e$=b$
    else
      e$=mid$(b$,1,a-1)
    end_if
until nba=pos_r
rsf:
if e$=r$ then item_add 91,a$
next n
if count(91)=0 then message "Rien trouvé"
message " il y a "+str$(count(91))+" résultats"
for n1=1 to count(91)
a$=item_read$(91,n1)
gosub dec_string
gosub resultat
next n1
return
' ====================== Pour afficher le résultat =============================
resultat:
for n2=1 to nbe
  item_add 1,element$(n2)
next n2
return
' ===============  Routine de découpage des éléments d'un string ===============
dec_string:
nba=0:ls=len(a$):a=instr(a$,s$):b$=a$
repeat:' boucle pour compter le nb de s$ dans a$
  ls=ls-a:b$=mid$(b$,a+1,ls):a=instr(b$,s$):nba=nba+1
until a=0:nbe=nba+1:if variable ("element$")=0 then dim element$(nbe):' création d'une variable par éléments => element$(n)
for n=1 to nba:' boucle de fabrication de element$(n)
  ls=len(a$):a=instr(a$,s$): element$(n)=mid$(a$,1,a-1):a$=mid$(a$,a+1,ls):element$(n+1)=a$
next n:return
' ______________________________________________________________________________
cre_fich:
if file_exists(fc$)=1 then return
file_open_write 1,fc$
file_writeln 1,"01|DUPOND|Jean Marie|123 rue de la paix|75000|PARIS"
file_writeln 1,"02|DURAND|Jean Claude|456 rue St Martin|06000|NICE"
file_writeln 1,"03|MARTIN|Maurice|Clinchamps|61000|ALENCON"
file_writeln 1,"04|D'ARC|Jeanne|Place du bucher|45000|ORLEANS"
file_writeln 1,"05|LEPLUBO|Jean Claude|14 avenue de la liberté|72100|LE MANS"
file_writeln 1,"06|DURAND|Victor|789 avenue de la république|72000|LE MANS"
file_close 1
' ______________________________________________________________________________

A+
Revenir en haut Aller en bas
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyVen 15 Juin 2012 - 13:04

Klaus a écrit:
Es-tu sûr d'avoir besoin d'avoir la totalité du fichier en mémoire simultanément ?

Oui, la totalité. Des mots sont enregistrés dans un fichier-texte au fur et à mesure que l'utilisateur les rencontre, accompagné de leur traduction ou définition. Pour faciliter une recherche ultérieure, le programme doit les afficher par ordre alphabétique dans un list. Le programme lit le fichier, mémorise les mots dans un tableau, les range par ordre alphabétique (je me sers de la routine que tu as proposée dans l'un des post du site - MERCI KLAUS !). La taille de ce tableau est donc variable.

Je suis parvenu à mes fins en lisant le fichier une première fois, incrémentant une variable à chaque nouvelle ligne lue. La variable finale me donne la taille du tableau. Je déclare le tableau. Je ferme le fichier puis le réouvre pour cette fois enregistrer les lignes dans le tableau.

Je ne sais pas s'il y a mieux, quelque chose de plus rapide. J'ai lu toutes les réponses avec attention. Je m'interroge à propos de ce DLIST que je découvre. Jean-Claude, je vais étudier ton code.

Merci à tous.
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyVen 15 Juin 2012 - 13:19

Tu peux faire ceci:
Code:

dim taille%, i%
dlist 1
file_load 1,"monfichier.txt"
taille% = count(1)
dim matable$(taille%)
for i%=1 to taille%
  matable$(i%) = item_read$(1,i%)
next i%
delete 1
et le tour est joué...

Tu peux même éventuellement trier la dlist 1, par la commande "sort 1", juste après "file_load...".
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyVen 15 Juin 2012 - 16:07

Merci pour toutes ces idées et ces astuces... Dlist cache bien des secrets et sera peut--être bien la solution !
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille EmptyVen 15 Juin 2012 - 18:18

L'astuce de Klaus est beaucoup plus simple que la mienne taille%=count(N) c'est tout bête, il fallait y penser.

@Ambroise, une astuce pour le DLIST (qui est un LIST invisible) tu peux en supprimer provisoirement le D pour visualiser ton fichier en cas de débogage.

A+
Revenir en haut Aller en bas
Contenu sponsorisé





déclarer une var tableau dont on ne connaît pas la taille Empty
MessageSujet: Re: déclarer une var tableau dont on ne connaît pas la taille   déclarer une var tableau dont on ne connaît pas la taille Empty

Revenir en haut Aller en bas
 
déclarer une var tableau dont on ne connaît pas la taille
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Déclarer la position d'un picture ?
» qui connait l'objet IMAGE?
» Changement de taille d'écran
» Déclarer une routine évènement par son nom
» Déclarer une routine évènement par son nom

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: