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
» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Nombre d'objets  - Page 2 Emptypar Yannick Aujourd'hui à 18:32

» Philharmusique
Nombre d'objets  - Page 2 Emptypar jjn4 Aujourd'hui à 13:58

» PANORAMIC V 1
Nombre d'objets  - Page 2 Emptypar papydall Hier à 3:22

» select intégrés [résolu]
Nombre d'objets  - Page 2 Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Nombre d'objets  - Page 2 Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Nombre d'objets  - Page 2 Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Nombre d'objets  - Page 2 Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Nombre d'objets  - Page 2 Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Nombre d'objets  - Page 2 Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Nombre d'objets  - Page 2 Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Nombre d'objets  - Page 2 Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Nombre d'objets  - Page 2 Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Nombre d'objets  - Page 2 Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Nombre d'objets  - Page 2 Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Nombre d'objets  - Page 2 Emptypar jjn4 Ven 26 Avr 2024 - 17:39

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-40%
Le deal à ne pas rater :
Tefal Ingenio Emotion – Batterie de cuisine 10 pièces (induction, ...
59.99 € 99.99 €
Voir le deal

 

 Nombre d'objets

Aller en bas 
+4
Jack
659_minifly
Nardo26
JL35
8 participants
Aller à la page : Précédent  1, 2, 3, 4, 5  Suivant
AuteurMessage
Nardo26

Nardo26


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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 16:16

Citation :
Eh ben bon courage ! parce que bonjour tous les cas particuliers... variable% = v2%+5, variable% = toto%+tata%-3 etc etc...
C'est fait... bon je ne suis pas allé aussi que le tu le propose,
dans le cas de : "variable%=v%+5" le programme affiche v%+5 (c'est déjà pas mal,enfin je trouve...)
Ce que je peux faire c'est afficher le n° de ligne de l'affectation de la variable...


@cosmos : je suis étonné par ta demande, vu que tu utilises un éditeur un peu plus performant que celui d'origine, tu dois bien avoir dans le menu 'Edit' une commande "Search & replace" (Trouver & Remplacer)
Avec ça tu peux renommer automatiquement toutes tes variables avec tous les noms à coucher dehors que tu veux ! Wink

Pour les includes : je vois pas où il y a de problème. Voir comment s'y prend D.J Peter avec par exemple TCP_INCLUDE.bas
en fait dans ce fichier on a au tout début:
- déclaration des variables
- déclaration des labels
- goto FindeFichier
- Déclaration de toutes les procédures
- puis sur la dernière ligne le label 'FindeFichier:'

Bon cela implique d'avoir des noms de variables bien spécifique au fichier
par exemple toutes les variables du fichier 'Toto.bas' que l'on veut inclure commence par 'TOTO_xxx'


Quelques petites questions, j'aimerai avoir votre avis :

1- Là où ça commence à être moche, c'est le formatage à l'écran. Que faire ? utiliser des grid ?

2- Pour les rajouts de fonctionnalités, plusieurs solutions :
a - Utiliser les pseudo-objets TAB de notre excellent ami Klaus...
b - Avoir plusieurs Form (dans le style du petit éditeur de Nicolas)
c - Autre ?
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 16:31

La ligne d'affectation de chaque variable... il peut y en avoir plusieurs évidemment, sans compter les for i% = ...
Et il faudrait aussi toutes les lignes où est utilisée la variable ? ça commence à faire beaucoup.

Le Chercher/Remplacer c'est valable pour les variables avec des noms un peu tordus (et donc uniques), mais pas pour les variables simples telles que i, m, ab etc., imagine les dégâts.

Tout ça me fait penser à l'arbre qui cache la forêt, on écarte une difficulté et il y en a 10 autres derrière... maintenant je sais bien que tout est possible en informatique (mais pas forcément facilement).
Et il faut tester son programme avec les programmes des autres, il y a des façons de programmer inattendues auxquelles on ne pense pas avant de les avoir vues ! Very Happy
Revenir en haut Aller en bas
Nardo26

Nardo26


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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 16:50

Non ce que je propose pour l'instant c'est ceci :
13 DIM MaListe% : MaListe%=number_objects+1
14 MEMO 21
15 For i%=22 to 26
16 EDIT i%
17 TOP i%,(23-i%)*15
18 NEXT i%
19 LIST MaListe%

Code:
numéro: 21                                        type:MEMO  déclaration ligne : 14
numéro: 22 to 26 (ligne 15)          var:i%      type:EDIT  declaration ligne : 16
numéro: number_objects+1 (ligne 13) var:MaListe%  type:LIST  déclaration ligne : 19


Quand aux tests, je recherche actuellement tous les exemples présent dans le forum... Wink
Je sais que fatalement je risque de tomber sur un cas tordu que je n'aurais pas prévu, mais on va dire que globalement cela devrait fonctionner dans la majorité des cas...

Quand au chercher/remplacer, si je veux modifier qu'une portion de code, je sélectionne un bloc puis j'applique le replace uniquement sur le bloc...

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




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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 17:30

Ah ouais, c'est déjà très élaboré !
Juste une petite remarque, à la place de 'numéro' j'afficherais 'objet', ça me semble plus parlant ?

Bon allez, je t'encourage des deux mains et je reste en jachère pour le moment (j'affiche juste la liste des variables et des étiquettes ... Embarassed )
Revenir en haut Aller en bas
Nardo26

Nardo26


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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 17:50

Je met à jour systématiquement mon site de manière que ceux qui prennent le train en route aient la dernière version...
As tu un avis concernant les questions que j'ai posé plus haut ?...
car là je ne sais pas encore véritablement dans quoi je me lance...
(des prises de tête, ça c'est sûr!) Very Happy
[Ok, je vais mettre 'objet' à la place)

Concernant le cahier des charges Wink

liste des variables, numéros des lignes où sont utilisées ces variables
ok dans une liste, on clique dessus et les numéros de ligne apparaissent.
Là où ça risque d'être mariole, c'est le cas des includes...

liste des étiquettes, numéros des lignes où sont appelées ces étiquettes
idem que pour les variables

liste des objets
c'est déjà en bonne voie...

Ce qui est vraiment dommage, c'est qu'il n'y a pas d'interaction possible avec l'éditeur pano... Sad
(ça fait râler ! Mad )


Dernière édition par Nardo26 le Lun 25 Oct 2010 - 18:14, édité 1 fois
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 18:13

Tu veux dire des questions sur le formatage et la présentation du résultat ? ça c'est la partie finale qui sera je pense facilement modifiable... sortie écran ? dans un fichier pour pouvoir l'éditer ? Perso je n'ai pas d'à priori, quand l'outil existera ce sera le plus facile à faire.

Il me semble que le plus dur c'est ce que tu es en train de faire, débusquer tous les cas particuliers...

Bon allez, je vais faire un tour sur ton site.
Revenir en haut Aller en bas
Nardo26

Nardo26


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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 18:17

Oups !
nos post ce sont croisés.
Pour répondre à ta question :
non c'est par rapport aux libellés, variables (bref le cahier des charges) Wink
Si je me lance dans un utilitaire qui fait une analyse de ce que l'on trouve dans un source,
il faut que cela reste facile à utiliser...
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 18:29

Comme dit l'autre: "je ne vous dis pas ce qu'il faut faire, mais je vous dirai au résultat si c'est bien ou pas" Very Happy

Les Label (étiquettes) ça semble assez facile, mais pour les variables à mon avis c'est une autre paire de manches pour aller les débusquer toutes dans le programme...

Pour en revenir aux include, je n'avais pas percuté sur ta réponse, effectivement la méthode d.j.peters semble résoudre de manière élégante le problème des déclarations de variables.
Revenir en haut Aller en bas
659_minifly




Nombre de messages : 590
Age : 75
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 18:30

Il y a quelque temps j'avais commencer a faire un programme du meme genre:

Code:



dim num_F%
 dim tp%
 dim lft%
 dim wth%
 dim hgt%
 dim brd_hd%
 dim clr_r%
 dim clr_g%
 dim clr_b%
 dim dumy%
 dim dummy$
 dim I%
 dim compteur%
 ' Définition des tableaux

 dim Tbl_Dictionnaire$(100)
 dim Tbl_variables$(100)
  I%=0
 Tbl_Dictionnaire$(I%)="dim"
  I%=I%+1
  Tbl_Dictionnaire$(I%)="label"
 
 ' Définitions des labels
  Label list1,list2,list3,list4,list5,list6
' Initialisation des variables pour la fenêtre 1
 num_f%=1
 tp%=30
 lft%=440
 wth%=153
 hgt%=445
 brd_hd%=1
 num_f%=2
 tp%=0
 lft%=0
 wth%=130
 hgt%=400
 brd_hd%=1
 clr_r% = 240
 clr_g% = 240
 clr_b% = 240


 ' ************************************
 ' Form 1 pour receptacle les variables
  form 1
  top 1,30
  left 1,440
  width 1,153
  height 1,445
  caption 1,"Dim"
  border_small 1
' **************************************
 ' List pour les variables
  command_target_is 1
  list 2
  top 2,0
  left 2,0
  width 2,133
  height 2,410
  parent 2,1
  color 2,240,240,240
  show 2


  ' ************************************
 ' Form 3 pour receptacle les variables
  form 3
  top 3,25
  left 3,440
  width 3,153
  height 3,445
  caption 3,"Labels"
  border_small 3

  ' *************************************
  ' Pour les labels
  command_target_is 3
    list 4
    top 4,0
    left 4,0
    width 4,133
    height 4,410
    parent 4,3
    color  4,240,240,240
    show 4
    item_add 4,"Label0"
    item_add 4,"Label1"
    item_add 4,"Label2"
    item_add 4,"Label3"
    item_add 4,"Label4"

 ' ************************************
 ' Form 5 pour receptacle les goto
  form 5
  top 5,25
  left 5,440
  width 5,153
  height 5,445
  caption 5,"GOTO"
  border_small 5

  ' *************************************
  ' List pour les goto
  command_target_is 5
    list 6
    top 6,0
    left 6,0
    width 6,133
    height 6,410
    parent 6,5
    color  6,240,240,240
    show 6
    item_add 6,"goto0"
    item_add 6,"goto1"
    item_add 6,"goto2"
    item_add 6,"goto3"
    item_add 6,"goto4"
   
 ' ************************************
 ' Form 7 pour receptacle les gosub
  form 7
  top 7,25
  left 7,440
  width 7,153
  height 7,445
  caption 7,"GOSUB"
  border_small 7

  ' *************************************
  ' List pour les gosub
  command_target_is 7
    list 8
    top 8,0
    left 8,0
    width 8,133
    height 8,410
    parent 8,7
    color  8,240,240,240
    show 8
    item_add 8,"gosub0"
    item_add 8,"gosub1"
    item_add 8,"gosub2"
    item_add 8,"gosub3"
    item_add 8,"gosub4"
 ' ************************************
 ' Form 9 pour receptacle des #include
  form 9
  top 9,25
  left 9,440
  width 9,153
  height 9,445
  caption 9,"#Include"
  border_small 9

  ' *************************************
  ' List pour les #include
  command_target_is 9
    list 10
    top 10,0
    left 10,0
    width 10,133
    height 10,410
    parent 10,9
    color  10,240,240,240
    show 10
    item_add 10,"#include0"
    item_add 10,"#include1"
    item_add 10,"#include2"
    item_add 10,"#include3"
    item_add 10,"#include4"

    ' ************************************
 ' Form 11 pour receptacle les Erreurs
  form 11
  top 11,25
  left 11,440
  width 11,153
  height 11,445
  caption 11,"Erreurs"
  border_small 11

  ' *************************************
  ' List 12 pour les Erreurs
  command_target_is 11
    list 12
    top 12,0
    left 12,0
    width 12,133
    height 12,410
    parent 12,11
    color  12,240,240,240
    show 12
    item_add 12,"Erreurs0"
    item_add 12,"Erreurs1"
    item_add 12,"Erreurs2"
    item_add 12,"Erreurs3"
    item_add 12,"Erreurs4"

 ' ****************************************
 ' Memo 17 pour afficher le programme
  command_target_is 0
  Memo 17
  top 17,0
  left 17,0
  width 17 ,600
  height 17,400
  font_name 17,"Consolas"
  font_size 17,14

 

  ' Initialisation des variables pour numérotation progamme
 dim a$ ,b% ,f$ ,c%  ,d$,E$ ,flgins$,flag_instr%
 b%=0
 flgins$="#include"
 flag_instr%=0
 label include

  ' Ouvrir la boite de dialogue
        open_dialog  13

  ' Choisir le fichier a traiter
        a$=file_name$(13)

  ' récupérer le nombre de caratères du nom de fichier
        c% = len(a$)

  ' récuperer le nom du fichier sans l'extension
      d$= left$(a$,C%-3)

  ' ajouter l'extension txt"
      d$= d$+"txt"

  ' Ouvrir le fichier en lecture a traiter
      file_open_read 14, a$

  ' ouvrir le fichier d'écriture
      file_open_write 15,d$

  ' test si pas fin de fichier
      while file_eof(14) <>1

  ' Lecture d'un ligne de fichier
      file_readln 14,f$

  ' On retire les blancs de devant et de derriere
          f$=trim$(f$)
         
      ' Incrémentation du compteur de ligne
          b%=b%+1

    ' changement de la variable numerique en string
          e$=str$(b%)

    ' ajout d'un blanc entre le numero de ligne et les instructions
          e$ = e$+" "+f$

    ' ecrire la ligne dans le fichier
            file_writeln 15,lower$(e$)
           
      ' on ecrit la ligne dans le memo
          item_add 17,e$
         
      ' Tester si la chaine #include existe dans la ligne
        flag_instr%=instr(f$,flgins$)

    ' Test si le drapeau flag_instr$ différent de zero
        if flag_instr%>0

    ' Test si le premier caractère est bien un #
    ' si oui c'est bien un include on va au sous-prog include
        if "#"= left$(f$,1) then gosub include
        end_if


    ' fin de la boucle
        end_while
     
      ' Fermeture des fichiers
      file_close 14
      file_close 15
     
    ' **********************************************************************
    ' Ceci est un test  pour voir si cela est faisable
    '  on enregistre toutes les déclarations des variables dans un tableau
    '  on a deja mis en minuscule tous les caractères dans le fichier *.txt
    '  On vas appelé le sous programme Variables
    label Recherche
    ' récupéation du mot a chercher
   
    ' Initialisation du compteur du memo
    compteur%=count(17)
    item_add 2,str$(compteur%)
    gosub Recherche


    ' **********************************************************************
   
  on_click 2,list1
  on_click 4,list2
  on_click 6,list3
  on_click 8,list4
  on_click 10,list5
  on_click 12,list6
  end

list1:
          dumy%=item_index(2)
            dummy$=item_read$(2,dumy%)
            print dummy$

return

list2:

            dumy%=item_index(4)
              dummy$=item_read$(4,dumy%)
                print dummy$
 return

 list3:

            dumy%=item_index(6)
              dummy$=item_read$(6,dumy%)
                print dummy$
  return

list4:

            dumy%=item_index(8)
              dummy$=item_read$(8,dumy%)
                print dummy$

  return

  list5:

            dumy%=item_index(10)
              dummy$=item_read$(10,dumy%)
                print dummy$
  return

  list6:

            dumy%=item_index(12)
              dummy$=item_read$(12,dumy%)
                print dummy$
  return

    terminate

include:

    ' longueur de la chaîne
    c%=len(f$)

      ' On convertit la caractère  "
      a$=chr$(34)

      ' position ou se trouve le premier ..."...
      I%=instr(f$,a$)


    ' on rajoute pour avoir le compte correct
          c%=(C%-I%)+2

      ' On a le nom du fichier Include
      f$= right$(f$,c%)

        f$=ltrim$(f$)

      file_open_read 16,f$
        ' test si pas fin de fichier
    while file_eof(16) <>1

    ' Incrémentation de la boucle
        b%=b%+1
       
        ' changement de la variable numerique en string
          e$=str$(b%)

       
      ' Lecture d'un ligne de fichier
    file_readln 16,f$
    ' ajout d'un blanc
          e$ = e$+" "+f$
          ' ecrire la ligne dans le fichier
            file_writeln 15,lower$(e$)

        item_add 17,e$
          end_while
          file_close 16
  flag_instr%=0
    return
   

Recherche:

' Recherche mot dans le memo
dim mot$,ligne$,ins_tr%
  ' On convertit la caractère  "
      a$=chr$(34)

 ' On recupère le mot du dictonnaire
      I%=0
      mot$=Tbl_Dictionnaire$(I%)
     
  for i%=1 to compteur% step 1
    ligne$=item_read$(17,i%)

    ' Est-ce que le mot existe dans la ligne
        ins_tr%=instr(ligne$,Mot$)
          set_focus 2
      If ins_tr%>0
          ins_tr%=instr(ligne$,"'")
              if ins_tr%=0
                    ins_tr%=instr(ligne$,"rem")
                   
                      if ins_tr%=0
                          ins_tr%=instr(ligne$,":")
                            if ins_tr%=0
                            ins_tr%=instr(ligne$,a$)
                            if ins_tr%=0
                              item_add 2,ligne$
                              end_if
                            end_if
                        end_if
              end_if
        end_if
      next i%

      return


S>i cela peut vous rendre service.
Revenir en haut Aller en bas
JL35




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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 18:38

C'est à dire qu'on ne voit pas très bien ce que ça fait, à part générer un fichier texte du programme avec les numéros de lignes...

Et l'indentation de ton programme est plutôt fantaisiste...

@Nardo, un exemple d'une petite difficulté à laquelle je me suis heurté dans la recherche de toutes les variables déclarées (en général chez moi sur une même ligne, séparées par des virgules): en plein milieu déclaration d'un tableau à deux dimensions:
Code:
DIM a$, b$, toto%(20), txt$(10, 100), x, y....
dans ce cas la virgule n'est plus le séparateur de variables et il faut faire des tests supplémentaires sur les parenthèses.
Comme toujours le cas général se traite en quelques lignes, et les cas particuliers rallongent considérablement le tout.


Dernière édition par JL35 le Lun 25 Oct 2010 - 18:44, édité 1 fois
Revenir en haut Aller en bas
Invité
Invité




Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 18:43

Je viens de prendre le train en cours de route, et je vois que vous avez le mord au dents.
Pour les includes, c'est pas dur: vous commencez par lire toutes les lignes, et dès que vous trouvez "#include " vous rajoutez le fichier.

J'ai pris un extrait d'un code qui devait servir pour tracer un programme, mais à force de problèmes et de blocage de l'éditeur Panoramic, j'ai perdu courage, et mis de côté.

Code:
list 1  :width 1,width(0)-30:height 1,200
' ---
rem "list 2 est le programme à mettre en fin"
memo 2  : top 2,210:width 2,width(0)-30:height 2,200:font_size 2,14:color 2,239,243,189:bar_both 2
file_load 1,"C:\TESTE\M_au _P_TRACE\Ajout_fin.txt"
for a%=1 to count(1)
  a$=item_read$(1,a%)
  if left$(upper$(trim$(a$)),8)="#INCLUDE"
      v%=instr(upper$(a$),"#INCLUDE ")
      item_add 2,"' dépilé: "+trim$(a$)
      b$=mid$(a$,v%+9,50)
      file_add 2,b$
  else
      item_add 2,a$
  end_if
next a%
Jetez un coup d'oeil, le programme avec toutes les lignes fonctionne, mais les particularité seraient gênantes ici.
Il n'y a pas les déclarations des dim, mais normalement ce doit être un problème pour comprendre.

Bon amusement!
Revenir en haut Aller en bas
Nardo26

Nardo26


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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 18:48

Merci minifly, Smile
Je viens tout juste de finir de jeter un oeil sur le programme de cosmos et après je regarderai le tiens...

@cosmos :
J'ai du mal à faire fonctionner ton prog. lorsque je deplace le scrollbar, j'ai systematiquement
'list index out of bound'
LEs objets 3 et 4 je l'ai est redeclarer en list (il me semble que tu y met des choses interessante)
mais il faut que je redimensionne tout car actuellement je ne vois pas grand chose...

Nombre d'objets  - Page 2 Captur12
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 19:07

Le programme ne fonctionne pas bien avec le scroll_bar. Je l'ai dis, c'est la partie récupération des DIM qui fonctionne, Le reste n'était pas faite pour votre programme.
Le fonctionnement avec deux listes n'est finalement pas la bonne solution, pourquoi? Parce que (avant que je modifie, et ce sera toujours valable selon ce principe), si on rempli la list 6 (6 est la liste de droite), en écrivant sans return, celle ci est en rapport, mais si par mégarde on fait return à chaque fois, on insert une ligne vide.
Donc ce principe n'est pas le bon. Il vaut mieux avoir deux listes côte à côte, et un edit pour modifier chaque ligne.
Mais cela c'était pour résoudre mon problème. La méthode que vous voulez utiliser pour faire votre programme, je ne la connait pas, et on ne fait pas la même chose.

J'ai laissé de côté, parce que j'ai plus important à faire, alors qu'en ce moment j'ai beaucoup de retard ailleur. Donc désolé.

J'ai parfois la possibilité de regarder le forum en passant, mais svp, de m'en demandez pas plus. Pourtant l'envie de faire est là.
Revenir en haut Aller en bas
Nardo26

Nardo26


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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 19:14

Ok ya pas de mal, merci cosmos !

Pour l'anecdote :
je viens regarder la façon dont tu procède et j'applique à peu près le même principe...
Au passage, j'ai lancé ton prog (et je l'ai fais testé sur lui-même) et il y a une faille :
sur la ligne de commentaire :
' je mets le label de la procédure, et les dims de départ
'dims' a été détecté par erreur et je me retrouve avec une variable 'de départ' Smile


Citation :
@Nardo, un exemple d'une petite difficulté à laquelle je me suis heurté dans la recherche de toutes les variables déclarées (en général chez moi sur une même ligne, séparées par des virgules): en plein milieu déclaration d'un tableau à deux dimensions:
Code:
DIM a$, b$, toto%(20), txt$(10, 100), x, y....

dans ce cas la virgule n'est plus le séparateur de variables et il faut faire des tests supplémentaires sur les parenthèses.
Comme toujours le cas général se traite en quelques lignes, et les cas particuliers rallongent considérablement le tout.

C'est sûr qu'il y a quelques cas à traiter... j'ai eu le même problème pour les chaines de caractères.
si dans un prog tu as :
caption 2,"EDIT : fichier incorrect" --> il ne faut pas tenir compte du contenu de la chaine...



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




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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 21:03

Juste une ébauche pour lister les variables et les labels déclarés, sans fioritures ni mise en forme, je laisse en l'état pour le moment puisque tu fais d'ores et déjà beaucoup mieux:
Code:
DIM f$, a$, b$, c$, a1$, i%, k%, k1%, k2%, nl%, nvar%, neti%, nobj%, ign%
DIM var$(200), eti$(100), obj$(100)
LABEL ra, rb, rc, rd, Suit1, Suit2, Tri, Misfo

f$ = "C:\LANGAGES\Panoramic\Etiquette.bas": ' ***** SOURCE A ANALYSER *****

nvar% = 0: neti% = 0: nobj% = 0
' ***** VARIABLES DÉCLARÉES (DIM)
FILE_OPEN_READ 1, f$: nl% = 0
WHILE FILE_EOF(1) = 0
    nl% = nl% + 1: FILE_READLN 1, a$: GOSUB Misfo: IF ign% = 1 THEN GOTO Suit1
    k% = INSTR(a$, "DIM ")
    IF k% > 0
        a$ = MID$(a$, k%+4, LEN(a$)-k%-3)
ra:
        k% = INSTR(a$, ":"): a1$ = ""
        IF k% > 0 THEN a1$ = MID$(a$, k%+1, LEN(a$)-k%): a$ = LEFT$(a$, k%-1)
        k% = INSTR(a$, "(")
        IF k% > 0
            b$ = MID$(a$, k%+1, LEN(a$)-k%)
            k2% = INSTR(b$, ")")
            IF k2% > 0
                k1% = INSTR(b$, ",")
                IF k1% > 0 AND k1% < k2%
                    k1% = k% + k1%: k2% = k% + k2%
                    a$ = LEFT$(a$, k%-1)+"["+MID$(a$, k%+1, LEN(a$)-k%)
                    a$ = LEFT$(a$, k1%-1)+"."+MID$(a$, k1%+1, LEN(a$)-k1%)
                    IF k2% < LEN(a$)
                        a$ = LEFT$(a$, k2%-1)+"]"+MID$(a$, k2%+1, LEN(a$)-k2%)
                    ELSE
                        a$ = LEFT$(a$, k2%-1) + "]"
                    END_IF
                END_IF
            END_IF
        END_IF
rb:
        k% = INSTR(a$, ",")
        nvar% = nvar% + 1: b$ = STR$(nl%): b$ = STRING$(5-LEN(b$)," ") + b$
        IF k% > 0
            var$(nvar%) = TRIM$(LEFT$(a$, k%-1)) + b$
            a$ = MID$(a$, k%+1, LEN(a$)-k%): GOTO rb
        END_IF
        var$(nvar%) = TRIM$(a$) + b$
        IF a1$ <> "" THEN a$ = a1$: GOTO ra
    END_IF
Suit1:
END_WHILE
FILE_CLOSE 1
' *****  ÉTIQUETTES DÉCLARÉES (LABEL)
FILE_OPEN_READ 1, f$: nl% = 0
WHILE FILE_EOF(1) = 0
    nl% = nl% + 1: FILE_READLN 1, a$: GOSUB Misfo: IF ign% = 1 THEN GOTO Suit2
    k% = INSTR(a$, "LABEL ")
    IF k% > 0
        a$ = MID$(a$, k%+6, LEN(a$)-k%-5)
rc:
        k% = INSTR(a$, ":"): a1$ = ""
        IF k% > 0 THEN a1$ = MID$(a$, k%+1, LEN(a$)-k%): a$ = LEFT$(a$, k%-1)
rd:
        k% = INSTR(a$, ",")
        neti% = neti% + 1: b$ = STR$(nl%): b$ = STRING$(5-LEN(b$)," ") + b$
        IF k% > 0
            eti$(neti%) = TRIM$(LEFT$(a$, k%-1)) + b$
            a$ = MID$(a$, k%+1, LEN(a$)-k%): GOTO rd
        END_IF
        eti$(neti%) = TRIM$(a$) + b$
        IF a1$ <> "" THEN a$ = a1$: GOTO rc
    END_IF
Suit2:
END_WHILE
FILE_CLOSE 1
' remise en forme des déclarations de tableaux à double entrée
FOR i% = 1 TO nvar%
    a$ = var$(i%)
    k% = INSTR(a$, "[")
    IF k% > 0
        a$ = LEFT$(a$, k%-1) + "(" + MID$(a$, k%+1, LEN(a$)-k%)
        k% = INSTR(a$, "]")
        IF k% > 0
            a$ = LEFT$(a$, k%-1) + ")" + MID$(a$, k%+1, LEN(a$)-k%)
            k% = INSTR(a$, ".")
            IF k% > 0
                a$ = LEFT$(a$, k%-1) + "," + MID$(a$, k%+1, LEN(a$)-k%)
            END_IF
        END_IF
        b$ = LEFT$(a$, LEN(a$)-5)
        FOR k% = 1 TO LEN(b$): ' suppression éventuelle des espaces superflus
            IF MID$(a$, k%, 1)=" " THEN b$=LEFT$(b$, k%-1) + MID$(b$,k%+1,LEN(b$)-k%)
        NEXT k%
        var$(i%) = b$ + RIGHT$(a$, 5)
    END_IF
NEXT i%
GOSUB Tri: ' tri alpha des résultats
HEIGHT 0, SCREEN_Y
PRINT f$ + " Total= " + STR$(nvar%) + " variables, " + STR$(neti%) + " étiquettes."
FOR i% = 1 TO nvar%
    PRINT LEFT$(var$(i%), LEN(var$(i%))-5) + " [" + TRIM$(RIGHT$(var$(i%),5)) + "]"
NEXT i%
PRINT " - ÉTIQUETTES -"
FOR i% = 1 TO neti%
    PRINT LEFT$(eti$(i%), LEN(eti$(i%))-5) + " [" + TRIM$(RIGHT$(eti$(i%),5)) + "]"
NEXT i%
END

Tri:
DLIST 99
FOR i% = 1 TO nvar%: ITEM_ADD 99, var$(i%): NEXT i%
SORT 99
FOR i% = 1 TO nvar%: var$(i%) = ITEM_READ$(99, i%): NEXT i%
CLEAR 99
FOR i% = 1 TO neti%: ITEM_ADD 99, eti$(i%): NEXT i%
SORT 99
FOR i% = 1 TO neti%: eti$(i%) = ITEM_READ$(99, i%): NEXT i%
DELETE 99
RETURN

Misfo:
' Mise en forme de a$ avant analyse (élimination des éléments superflus)
ign% = 0
a$ = TRIM$(a$): IF a$ = "" THEN ign% = 1: RETURN
k% = INSTR(a$, "' "): IF k% = 1 THEN ign% = 1: RETURN
IF k% > 0 THEN a$ = RTRIM$(LEFT$(a$, k%-1))
IF RIGHT$(a$, 1) = ":" THEN a$ = LEFT$(a$, LEN(a$) - 1)
' Éliminer le contenu entre quotes (merci Nardo)
k% = INSTR(a$, CHR$(34))
IF k% > 0
    b$ = MID$(a$, k%+1, LEN(a$)-k%)
    k1% = INSTR(b$, CHR$(34))
    IF k1% > 0
        a$ = LEFT$(a$, k%) + MID$(b$, k1%, LEN(b$)-k1%+1)
    END_IF
END_IF
RETURN

Ce qui manque beaucoup pour ces analyses de textes (je sais, je me répète pour la nième fois), et qui simplifieraient considérablement le code ci-dessus:
- une fonction INSTR qui démarrerait la recherche à un endroit donné de la chaîne (1 par défaut), pour enchaîner les recherches.
- des fonctions LEFT$, RIGHT$ et MID$ qui ne partiraient pas en erreur si la chaîne résultante est vide, mais rendraient une chaîne vide, justement.
- une fonction MID$ avec le dernier paramètre implicite = tout le reste de la chaîne, ce qui éviterait d'avoir à calculer à chaque fois la longueur de ce qui reste.


Dernière édition par JL35 le Mar 26 Oct 2010 - 16:14, édité 3 fois
Revenir en haut Aller en bas
Invité
Invité




Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 21:41

@ Nardo
Citation :
' je mets le label de la procédure, et les dims de départ
'dims' a été détecté par erreur et je me retrouve avec une variable 'de départ'

J'ai eu beaucoup de mal. J'ai eu une micro coupure, et je ne retrouvais pas le programme sur lequel j'ai pris une partie du code. Je l'ai retrouvé et je ne comprend pas, le fichier n'avait pas d'extention.

J'ai modifié le chemin de lecture pour lire justement ce programme. Je ne trouve aucune erreur.
J'avoue ne pas comprendre. Cela dis, le programme que j'ai mis, est une partie du programme que lui-même j'ai été chopé avant dans un autre programme. Ça craint! n'est-ce pas!
Le premier programme qui n'est pas fini, dont le code chopé venait de celui-là, j'ai essayé plein de programme, et modifié les dim, pour avoir à mon sens tous les cas de figure. Maintenant, je ne suis que la toute petite fourmis dans l'univers, le monde étant grand autour de moi, j'ai peut-être loupé un truc.
Revenir en haut Aller en bas
JL35




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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 22:23

@Nardo (y'en a que pour lui) je relisais un de tes posts précédents, pour le cas des INCLUDE, en ce qui me concerne je crois que je fabriquerais un fichier temporaire (sur lequel se ferait ensuite le travail d'analyse) regroupant le programme principal et ses Include développés à leurs emplacements respectifs, comme ça on serait ramené au cas précédent sans Include.
Revenir en haut Aller en bas
Invité
Invité




Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 22:28

Excuses moi JL35, je ne pense pas qu'à Nardo, mais il me pose des questions, donc j'y répond.

Je me suis dis que j'avais commencé un éditeur, dont je voulais avoir la list des DIM et des LABEL.
J'ai tout retiré, sauf celà. Du nettoyage!
Vous en ferez ce que vous voudrez (poubelle peut-être)
Code:

dim glis%,n_picture%,a%,a$,b%,b$ ,f$
f$="C:\TESTE\voir.bas"

label recherche_label,recherche_dim,charger,clic_aucun,clic_label,clic_dim

full_space 0:height 0,screen_y -40
               
dlist      45 : ' normalement mémoire
dlist      46 : ' est la liste où le programme est en création /load /save /modifie...
list        47 :left 47,width(0)-215:top 47,55:width 47,160:height 47,height(0)-150:font_size 47,12
list      100 :hide 100:left 100,width(0)-215:width 100,160:top 100,55:font_size 100,12 :height 100,height(0)-150

container_option 97 :left 97,width(0)-215:top 97,0:height 97,50:width 97,170
option      96:parent 96,97:left 96,5  :top 96,10:caption 96,"Aucun"
option      94:parent 94,97:left 94,105:top 94,10:caption 94,"Label"
option      93:parent 93,97:left 93,105:top 93,30:caption 93,"Dim"

  gosub charger
  on_click 96,clic_aucun
  on_click 94,clic_label
  on_click 93,clic_dim
end
' ==============================================================================
charger:
  clear 46
  file_load 46,f$
  glis%=0 :n_picture%=count(46)
  gosub recherche_label
  gosub recherche_dim
' ==============================================================================
recherche_label:
  ' recherche des labels
  for a%=1 to count(46)
      a$=item_read$(46,a%)
      if right$( trim$(a$),1)=":"
        if instr(trim$(a$)," ") =0 then item_add 47,a$
      end_if
  next a%
return
' ==============================================================================
recherche_dim:
  ' recherche des DIM
  for a%=1 to count(46)
      a$=trim$(item_read$(46,a%))
      if upper$(left$(trim$(a$),4))="DIM "
        a$=trim$(right$(a$,len(a$)-4))
        b%=instr(a$,":")
        if b%>0 then a$=trim$(left$(a$,b%-1))
        b$=a$
        repeat
            b%=instr(a$,",")
              if b%>0
                  b$=trim$(left$(a$,b%-1))
                  item_add 100,b$
                  a$=trim$(right$(a$,len(a$)-b%))
              else
                  b$=a$
              end_if
        until b%=0
      end_if
  next a%
  sort 100
return
' ==============================================================================
clic_aucun:
  hide 47:hide 100
return
' ==============================================================================
clic_label:
  hide 100
  show 47
return
' ==============================================================================
list_label:
  ch$= item_index$(47)
  hide 47
  mark_on 96
return
' ==============================================================================
clic_dim:
  hide 47
  show 100
return

Et maintenant je reprend mon programme.
A ce propos, je ne regarde pas vos sources pour l'instant. Donc je ne peux pas donner une opinion
Revenir en haut Aller en bas
JL35




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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 22:39

eh cosmos, je plaisantais, évidemment !
Revenir en haut Aller en bas
Invité
Invité




Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 22:45

J'en suis convaincu, tu es plus réservé que moi.
Cette fois ci, je repars
Revenir en haut Aller en bas
JL35




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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyLun 25 Oct 2010 - 23:47

J'ai édité mon post un peu plus haut avec un exemple, en triant les listes (variables et étiquettes) par ordre alpha, et en ajoutant après chaque variable ou étiquette le numéro de sa ligne de déclaration.
Reste plus qu'à trouver dans le programme tous les endroits où tout ça est appelé. pour ajouter les numéros de lignes correspondants derrière. Une paille ! affraid

En attendant Sleep
Revenir en haut Aller en bas
Nardo26

Nardo26


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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyMar 26 Oct 2010 - 0:27

Hello,
je suis de retour, alors que vous allez tous faire dodo... Wink
Que de réponses !! cheers

@JL35:
- Au sujet des includes
Si on veut vraiment traiter ce sujet correctement : le pb c'est qu'un fichier (on va dire) 'include' peut contenir lui aussi des includes qui peuvent, etc.... aie! ça se corse (pour traiter ce genre de cas, il faudrait presque faire une routine récursive...) On rentre dans quelque chose de complexe avec des risques de plantage suite à des débordement de pile... je pense que pour cet utilitaire, il vaut mieux s'en tenir au fichier principal (que l'on charge). Si on commence à traiter les includes, on a une notion de projet et non plus d'un simple fichier source.

- Au sujet de ton prog : c'est presque parfait ! Smile
il reste juste à rajouter le fait qu'on doit ignorer les chaines de caractères. Je m'explique si tu lances ton prog et qu'il s'analyse lui-même,tu obtiens une variable en ligne 15 : k% = INSTR(a$, "DIM ") et un label en ligne 59 : k% = INSTR(a$, "LABEL ")

C'est vrai que pour retrouver les n° de ligne où sont utilisés les variables cela risque d'être mariole -> je pense procéder ainsi :dans un 1er temps, création d'un dictionnaire de variable (comme ton prog) puis en 2eme traiter ligne par ligne le source et compléter le dico...

Le traitement risque de prendre beaucoup de temps...(je me trompe peut être puisque tout sera manipulé à partir d'une dlist)

Sinon un cas tout bête mais vraiment tout bête que je n'ai pas encore traiter :
EDIT 456: EDIT 789: DLIST Variable%: ' le tout sur la même ligne
[Edit]
Le cas tout bête est traité ...
mise à jour:
Etiquette ! (juste les déclarations)
[/Edit]

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




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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyMar 26 Oct 2010 - 15:09

Bonjour Nardo et les autres.

Au sujet des Include, je ne pensais évidemment qu'à un seul niveau d'Include, s'il y en a en cascade ça ne marche évidemment plus (mais on pourrait appliquer le même traitement, récursif), mais j'estime que ça doit être rarissime, sinon inexistant.

Concernant les chaînes de caractères entre quotes, elles sont évidemment à éliminer de l'analyse, ça m'avait échappé mais j'y ai pensé au vu d'un de tes posts précédents Wink

(PS j'ai édité mon post plus haut pour y ajouter l'élimination des contenus entre quotes avant analyse)

Pour la liste d'utilisation des variables, effectivement l'analyse doit être très longue.
Pour chaque ligne il faut rechercher successivement toutes les variables du tableau, et surtout savoir les isoler: comment distinguer une variable i dans une ligne source, avec tous les i qu'il peut y avoir un peu partout ? a priori ça me paraît mission quasiment impossible...
Ton idée d'analyse de la ligne est peut-être intéressante, mais tout ça me paraît un peu flou...
Revenir en haut Aller en bas
Invité
Invité




Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyMar 26 Oct 2010 - 15:55

Je vais répondre rapidement, je dois partir.
Déjà, je hurle contre la recherche sur ce forum, par membre je ne peux descendre au delà du mois de juin!!
Si je prend le bavardage, je m'arrète au 31 décembre. Je crois qu'il va falloir prendre la peine d'enregistrer les pages WEB pour retrouver ce qu'on y mets.

Je l'ai déjà fait de retrouver les variables, d'ailleurs toutes les séparations, mot clé, label dim variables, et je ne sais plus.

Cela fait plus de 15 jours que j'étais bloqué sur mon programme, et je pensais que cela venait de moi, mais non (une particularité des fontes ) peu importe.
Le mieux est de mettre tous les mots clés dans une chaîne avec un séparateur. Manque de temps.
variables: devant space,+*-).
Je reprendrai plus tard, mais l'ayant fait vers la fin décembre, je sais que c'est possible.
Revenir en haut Aller en bas
JL35




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

Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 EmptyMar 26 Oct 2010 - 16:09

La difficulté n'est pas de faire la liste de toutes les variables, avec les déclarations c'est facile.

Le problème c'est de retrouver ensuite dans le code dans quelles lignes elles sont utilisées, avec toutes les ambigüités possibles dans leurs noms, leurs positions dans le code... enfin, je pense.

Pour les recherches, Klaus a peut-être une solution pour toi: https://panoramic.1fr1.net/vos-sources-vos-utilitaires-a-partager-f2/recherches-dans-le-forum-t1189.htm mais je n'ai pas encore expérimenté.
Revenir en haut Aller en bas
Contenu sponsorisé





Nombre d'objets  - Page 2 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 2 Empty

Revenir en haut Aller en bas
 
Nombre d'objets
Revenir en haut 
Page 2 sur 5Aller à la page : Précédent  1, 2, 3, 4, 5  Suivant
 Sujets similaires
-
» Comment déterminer le nombre de chiffres d'un nombre naturel
» Formatage d'un nombre
» variable nombre
» Une couleur est un nombre
» Racine cubique d'un nombre

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos souhaits d'amélioration de Panoramic-
Sauter vers: