FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Video Control Center
par Yannick Aujourd'hui à 3:49

» Désamorcer la bombe
par Marc37 Aujourd'hui à 2:49

» Bataille terrestre (version child)
par papydall Hier à 21:56

» KGF_dll - nouvelles versions
par Jicehel Ven 24 Mar 2017 - 23:19

» Ras la casquette...
par Yannick Ven 24 Mar 2017 - 18:48

» Problème avec 'instr_last'.
par Yannick Ven 24 Mar 2017 - 18:42

» Jeu de l'oie stratégique
par jjn4 Jeu 23 Mar 2017 - 20:46

» Suite aux dernières commandes
par Yannick Jeu 23 Mar 2017 - 16:00

» Aide (imprimable) sur PANORAMIC avec exemples
par papydall Jeu 23 Mar 2017 - 14:28

» Jeu de l'OIE électronique
par jjn4 Mer 22 Mar 2017 - 18:26

» Jeu de l'oie interplanétaire
par jean_debord Mar 21 Mar 2017 - 11:11

» Problème de création d'exécutable.
par Yannick Mar 21 Mar 2017 - 5:21

» Un bug avec USER_EVENT ?
par Klaus Lun 20 Mar 2017 - 17:41

» Bienvenue Cherrie merrie !
par Yannick Lun 20 Mar 2017 - 3:55

» Bienvenue à v.rousseau
par Yannick Dim 19 Mar 2017 - 16:26

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mars 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier

Partagez | 
 

 Une curiosité...

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Yannick

avatar

Nombre de messages : 7306
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: Une curiosité...   Ven 19 Oct 2012 - 7:33

Cherchez le "1"... Laughing

Code:
Make_Grid(1,10,4)
grid_save 1,10,4,"Grid.txt"
pause 5000
Row_Delete(1,"1")

end
' ------------------------------------------------------------------------------
sub Make_Grid(No%,R%,C%)
dim_local L%
grid No%
grid_row No%,R% :grid_column No%,C%
for L%=1 to R%:grid_write No%,L%,1,str$(L%):next L%
End_Sub
' ------------------------------------------------------------------------------
sub Row_Delete(No%,Item$)
if object_exists(2)=0 Then Dlist 2
file_load 2,"Grid.txt"
Dim_Local x%,y%,R%,C%,i$
R%=Val(item_read$(2,1)) : C%=Val(Item_read$(2,2)) : x%=0 : y%=0
While x% < count(2)
  x%=x%+1
  i$=item_read$(2,x%)
  if Item$=i$ Then Exit_While
End_While

R%=R%-1
Item_Delete 2,1
Item_Insert 2,1,Str$(R%)

for y%=0 to C%-1
  Item_Delete 2,x%+y%
Next y%
file_save 2,"Grid.txt"

grid_row No%,R%
grid_load No%,"Grid.txt"
End_Sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7306
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 19 Oct 2012 - 12:06

Pas de commentaires ?...
Sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Une curiosité...   Ven 19 Oct 2012 - 13:00

Tu fais une erreur d'adressage au moment de la suppression des lignes dans la DLIST. Regarde ta procédure modifiée:
Code:
sub Row_Delete(No%,Item$)
if object_exists(2)=0 Then Dlist 2
file_load 2,"Grid.txt"
Dim_Local x%,y%,R%,C%,i$
R%=Val(item_read$(2,1)) : C%=Val(Item_read$(2,2)) : x%=0 : y%=0
While x% < count(2)
  x%=x%+1
  i$=item_read$(2,x%)
  if Item$=i$ Then Exit_While
End_While
message str$(x%)

R%=R%-1
Item_Delete 2,1
Item_Insert 2,1,Str$(R%)

for y%=0 to C%-1
  Item_Delete 2,x%  : ' + y%  <=== le problème est ici !
Next y%
file_save 2,"Grid.txt"

grid_row No%,R%
grid_load No%,"Grid.txt"
End_Sub

Explication: dans ta boucle, pour l'indice y%=0, tu supprimes la ligne 3. La ligne 4 devient alors la ligne 3 et ainsi de suite. Or, tu supprimes ensuite la ligne 4 qui était l'ancienne ligne 5, etc.

Si tu avais chargé les autres cellules de chaque ligne, tu aurais vu le problème immédiatement.

Il suffit de supprimer la ligne dont l'indice est trouvé par la boucle de recherches autant de fois que tu as de colonnes.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7306
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 19 Oct 2012 - 15:04

@ Klaus,

Bien vue ! j' avais zappé le fais sur la boucle for... next chaque ligne était remontée.
Je corrige dans mon source et du coup celà donne cette procedure :
Code:
Make_Grid(1,10,4)
grid_save 1,10,4,"Grid.txt"
pause 5000
Row_Delete(1,"1")

end
' ------------------------------------------------------------------------------
sub Make_Grid(No%,R%,C%)
dim_local L%
grid No%
grid_row No%,R% :grid_column No%,C%
for L%=1 to R%:grid_write No%,L%,1,str$(L%):next L%
End_Sub
' ------------------------------------------------------------------------------
sub Row_Delete(No%,Item$)
if object_exists(2)=0 Then Dlist 2
file_load 2,"Grid.txt"
Dim_Local x%,y%,R%,C%,i$
R%=Val(item_read$(2,1)) : C%=Val(Item_read$(2,2)) : x%=0 : y%=0
While x% < count(2)
  x%=x%+1
  i$=item_read$(2,x%)
  if Item$=i$ Then Exit_While
End_While

R%=R%-1
Item_Delete 2,1
Item_Insert 2,1,Str$(R%)

for y%=1 to C%
  Item_Delete 2,x%
Next y%
file_save 2,"Grid.txt"

grid_row No%,R%
grid_load No%,"Grid.txt"
End_Sub

pour supprimer une ligne du grid .

PS : a condition de se servir des commandes Grid_Save et Grid_load
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Une curiosité...   Ven 19 Oct 2012 - 15:18

Mais attention ! Dans ta procédure de suppression, tu supprimes C% lignes dès que tu rencontres item$ dans n'importe quelle cellule du grid (ligne du fichier) ! Et cela va de bousiller ton tableau si tu trouves l'information dans de 3ème cellule d'une ligne, par exemple, car tu détruiras la troisième et 4ème, puis la première et la 2ème de la ligne suivante ! De plus, pour la recherche, il faut dépasser les deux premières lignes qui sont réservées.

La version suivante ne fait le test que sur la première cellule d'une ligne:
Code:
sub Row_Delete(No%,Item$)
if object_exists(2)=0 Then Dlist 2
file_load 2,"Grid.txt"
Dim_Local x%,y%,R%,C%,i$
R%=Val(item_read$(2,1)) : C%=Val(Item_read$(2,2)) : x%=0 : y%=0
x% = 2 : ' <======= pour dépasser les 2 premières lignes !!!!!!!!
While x% < count(2)
  i$=item_read$(2,x%)
  if Item$=i$ Then Exit_While
  x%=x%+C% : ' <======== !!!!!!!!
End_While

R%=R%-1
Item_Delete 2,1
Item_Insert 2,1,Str$(R%)

for y%=1 to C%
  Item_Delete 2,x%
Next y%
file_save 2,"Grid.txt"

grid_row No%,R%
grid_load No%,"Grid.txt"
End_Sub

Et cette version détruit toutes les cellules d'une même ligne, même si l'on trouve l'info dans une autre cellule que la première:
Code:
sub Row_Delete(No%,Item$)
if object_exists(2)=0 Then Dlist 2
file_load 2,"Grid.txt"
Dim_Local x%,y%,R%,C%,i$
R%=Val(item_read$(2,1)) : C%=Val(Item_read$(2,2)) : x%=0 : y%=0
x% = 2 : ' <======= pour dépasser les 2 premières lignes !!!!!!!!
While x% < count(2)
  y% = 0      : ' <=======
  while y%<C%  : ' <=======
    i$=item_read$(2,x%+y%)
    if Item$=i$ Then Exit_While
  end_while    : ' <=======
  x%=x%+C%    : ' <======= !!!!!!!!
End_While

R%=R%-1
Item_Delete 2,1
Item_Insert 2,1,Str$(R%)

for y%=1 to C%
  Item_Delete 2,x%
Next y%
file_save 2,"Grid.txt"

grid_row No%,R%
grid_load No%,"Grid.txt"
End_Sub
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7306
Age : 45
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 19 Oct 2012 - 19:02

Effectivement dans ma procédure je cherchais un éléments de la première colonne
pour la comparaison et je faisais toutes les cases de la ligne dont la comparaison était "true"

Je cherchais à faire une procédure en me basant sur mes besoins et j'ai pas pris en compte
que l'on puis avoir deux fiches de nom identique ( quasi impossible avec des chevaux )
où que l'on cherche à éliminer une fiche de part une de ses données.

Je me raviserai en disant que c'est une base de réflexion... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Une curiosité...   

Revenir en haut Aller en bas
 
Une curiosité...
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» simple curiosité... c'est qui lui?!
» Curiosité : qu'avez-vous fais de votre toolbar ?
» Plante Dischidia et son Escargot "Curiositée)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Présentation et bavardage-
Sauter vers: