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 4 Emptypar Yannick Aujourd'hui à 18:32

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

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

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

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

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

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

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

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

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

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

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

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

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

» Bataille navale SM
Nombre d'objets  - Page 4 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
Le Deal du moment :
Pokémon EV06 : où acheter le Bundle Lot ...
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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyJeu 28 Oct 2010 - 17:13

L’avantage de la solution par lien c’est que le dossier « ForumPano » tu peux le faire pointer en fait où tu veux !…
Oui j’ai vu ton programme. Un timer qui exécute toute les x secondes la présence d’un fichier (via file_exists) ne suffit pas dans mon cas…
Ce qui me manque c’est des fonctions comme : file_date$(N) ou file_time$(N) qui me renverrai la date et l’heure du fichier…

PS: J’ai essayé notepad++ : j’arrive à replier les blocs while for etc.. mais pas les procédures Sad … (une étiquette c'est un nom suivi de ':' et ça c'est difficile à notepad++ de pouvoir l'isoler par rapport à un ':' entre des instructions...)


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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyJeu 28 Oct 2010 - 17:42

Ces histoires de répertoires ne me gênent pas trop, tous mes téléchargements vont systématiquement dans le répertoire C:\Telechar, dans lequel je décompacte éventuellement les .zip, et ce n'est qu'ensuite que je dispatche le(s) résultat(s) dans un répertoire de mon choix, manuellement.

Ce qui me gêne c'est quand dans un source extérieur que je teste il y a en plein milieu ou n'importe où une référence à un répertoire particulier que je n'ai pas chez moi, ou pire création de fichiers ou de répertoires je ne sais où à mon insu, et ça je n'aime pas, j'aime bien savoir ce que je fais.

Alors ce que j'essaie de faire moi-même c'est de répertorier en tout début de programme, de manière bien visible, sous forme de variables, les noms de fichiers et de chemins, et de fichiers temporaires, de façon que ce soit facilement adaptable. Et si je crée des fichiers temporaires, je tâche de faire en sorte de les supprimer avant la sortie du programme, pour ne rien laisser traîner.

@Nardo c'est vrai que ça manque les dates de fichiers, et que les appels à msdos font apparaître une fenêtre désagréable, mais c'est très fugitif, et au moins c'est un moyen.

Vous envisagez des solutions très sophistiquées d'utilisation de ces programmes d'analyse, pour moi j'utilise de la façon suivante:
- ouverture dans l'éditeur Panoramic du programme à tester (onglet principal)
- ouverture dans un deuxième onglet du programme d'analyse
- travail sur le programme à tester, et, sur demande ponctuelle d'analyse, enregistrement de ce programme, basculement sur le 2ème onglet et lancement du programme d'analyse -> affichage du résultat. On peut laisser le résultat affiché et revenir sur le 1er onglet, pour comparer.
Revenir en haut Aller en bas
Invité
Invité




Nombre d'objets  - Page 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyJeu 28 Oct 2010 - 17:59

je ne comprend pas trop bien. Je ne veux absolument pas imposer ma méthode, seulement, je ne comprends pas.
Si par file_exists le programme est lu, tu as obligatoirement l'heure et la date, vu qu'il s'ouvre à la création.
Maintenant je fais voeux de silence jusqu'à au moins ce soir ou cette nuit.
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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyJeu 28 Oct 2010 - 18:18

@JL35:
Ben c'est ce que fait actuellement : j'ai mon prog d'analyse dans un onglet et je le lance à la demande.
Cette histoire de date et heure c'est on va dire "la cerise sur le gateau" dans le cas ou le programme serait compilé...

Je sais pas comme tu fais mais lorsqu'un programme plante (ce qui arrive souvent lorsqu'on travaille avec des timers) et que je fais CTRL+ALT+DEL pour le tuer. Si je veux de nouveau avoir la possibilité de relancer après modif, je suis obligé d'ouvrir un nouvel onglet pour avoir le bouton "run" de valide...
et comme on ne peut pas fermer les onglets... je me retrouve avec un éditeur avec des programmes qui se baladent entre des séries d'onglets vides...
cool.... Very Happy

@cosmos :
imagines le truc : tu tapes un prog, tu sauvegardes à 17h20... le fichier est présent dans ton répertoire, le timer va détecter sa présence et lancer son traitement. jusque là : ok.
Tu lances ton programme (F9), tu fais tes tests et tu te rend compte qu'il y a un truc qui cloche. Donc tu fermes le prog et tu modifies la ligne ou tu as trouvé ton bug. Au passage tu as crée des nouvelles variables et des nouveaux objets. Tu re-sauvegardes à 17h30 (tu écrases le fichier existant): ton timer ne va rien voir car le fichier .bas était déjà présent... donc pas de rafraichissement automatique de la liste des objets.

Le seul truc que pourrait faire à la rigueur le timer c'est de supprimer physiquement le fichier .bas après son traitement mais là c'est travailler sans filet: si l'éditeur plante tu as tout perdu! sans compter que si le timer supprime le fichier, l'éditeur quand à lui n'a rien vu et quand tu vas fermer celui-ci (il ne va pas proposer de sauvegarder) tu vas tout perdre également....


Dernière édition par Nardo26 le Jeu 28 Oct 2010 - 19:58, édité 3 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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyJeu 28 Oct 2010 - 18:55

Ben oui, avec le ctl/alt/del (ou mieux ctl/maj/esc) on est coincé... perso je ferme carrément tout et je relance l'éditeur (après enregistrement éventuel) mais c'est bien embêtant.

Bon, c'est pas tout ça mais c'est l'heure de l'apéro ! Very Happy
Revenir en haut Aller en bas
Invité
Invité




Nombre d'objets  - Page 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyJeu 28 Oct 2010 - 19:56

je ne comprend pas trop bien. Je ne veux absolument pas imposer ma méthode, seulement, je ne comprends pas.
Si par file_exists le programme est lu, tu as obligatoirement l'heure et la date, vu qu'il s'ouvre à la création.
Maintenant je fais voeux de silence jusqu'à au moins ce soir ou cette nuit.
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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyJeu 28 Oct 2010 - 20:13

Et ton vœux de silence ? Smile
Non, tu n'as pas compris : le programme ne crée pas de fichier. Il ouvre en lecture le fichier .bas que tu est en train d'éditer sous panoramic.
D'ailleurs, il n'existe pas de fonction qui te donne l'heure de création/modification d'un fichier.
Quand tu sauvegardes la première fois, tu lances l'utilitaire tu choisis le fichier .bas qui est ouvert sous pano: ok pas de problème. Et encore: il connait la date et l'heure du chargement du .bas mais pas la véritable date de création. Là où ça coince c'est quand tu re-sauvegardes (suite à une modif) ton fichier .bas (qui est toujours ouvert dans l'éditeur de pano) -> l'utilitaire ne peut pas détecter de manière automatique cette modification...


Bon l'apero est fini, c'est l'heure d'aller becqueter... Wink
A+
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




Nombre d'objets  - Page 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyJeu 28 Oct 2010 - 20:41

Merci pour l'apéro, ce sera un peu plus aujourd'hui (vu le rapport avec Coluche, mais chut!)
On va pas se battre, et d'ailleurs peut importe, chacun a sa vision des faits.
Ma méthode sauvegarde le fichier, qui est détecté apr le programme. Ce programme l'efface, et le sauvegarde sous un autre nom. la date et l'heure doit-être celui de l'instant présent, et tu le connais. Il y a time$, et Date$ pour le savoir.
Je ne vérifie pas, mais si celle-ci reste la même vu qu'il y a le paramètre modifie, avant d'effacer le programme qui venait d'être récupéré, tu effaces l'ancien programme sous son vrai nom, et celui qui vient d'être reçu, tu le renommes.
Enfin, j'ai conscience que tout cela est de la théorie, vu que je ne vérifie pas ce que je dis, et là je vais être puni, vu que j''aurai violer mon voeux de silence.

Je crois qu'il vaut mieux pour moi, de vous laissez faire, vu qu'il n'y pas pas de contribution de ma part (j'en ai dit un peu plus que tous ceux qu'ils nous lisent).

Seulement votre idée de se servir d'un programme extérieur pour faciliter la création d'un source, est une bonne idée. Si ce que vous faites me convient, je l'adopterai, sinon, il y a de forte chance que je reprenne à mon compte l'idée pour mon programme. Celui que je suis en train de faire fait est le départ d'un vaste projet personnel, et doit servir pour le programme. Par contre, il va durer des mois, et certainement encore des mois. L'idée de contrôle et d'informations en temps voulu, je suis déçu, je n'y avais pas pensé.
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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyJeu 28 Oct 2010 - 20:48

oui ton idée est bonne : il suffit que l'utilitaire le renomme en .bak et le tour est joué. Losque l'on re-sauvegarde sous l'editeur, l'utilitaire peut à ce moment le détecter...
Merci Cosmos !
Je vais de suite le mettre en application! Wink
Revenir en haut Aller en bas
http://nardo26.lescigales.org
dragonno




Nombre de messages : 341
Localisation : Près de Toulouse
Date d'inscription : 22/01/2009

Nombre d'objets  - Page 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 2:28

Bonjour, je prend le truc en route, et j'ai lu le début et un peu le milieu du débat et le dernier post car c'est vraiment trop long de tout lire, et on dirait que le sujet initial a été dévié vers autre chose, en tous cas, serait-il possible de faire un résumé de ce que vous êtes en train de vouloir faire, un résumé du projet voulu quoi.
Cela aiderait aussi peut-être à se mettre les idées en place après toute cette discussion de plusieurs pages.
Sinon tant pis Wink
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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 9:09

Le sujet de la discussion n'a pas vraiment dévié, car la détection de modification de fichier apporte un plus au programme...
La preuve par l'image : Wink
Cette petite animation est un résumé du projet : Analyse et détection des objets d'un programme source. Pour l'instant je me suis concentré sur les objets et JL35 regarde de son coté pour les variables (s'il le souhaite Wink ). Quand aux étiquettes c'est également opérationnel (quoique cela demanderai à être optimisé)



PS: Pour l'instant cette derniere version n'est pas encore sur mon site car la détection de modif de fichier fait appel à FILE_DELETE et je voudrais m'assurer qu'il n'y a pas de problème avant de la mettre à dispo...
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

Nombre d'objets  - Page 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 12:32

Jusqu'à présent je ne voyai pas bien la finalité de ce post. Vu la démo de Nardo çà sent bon l'utilitaire.
je vous observe avec intérêt.
Revenir en haut Aller en bas
JL35




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

Nombre d'objets  - Page 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 15:16

C'est vrai que le sujet d'origine: trouver pendant le déroulement du programme un numéro d'objet libre, pour pouvoir faire une création ponctuelle, l'utiliser et le supprimer ensuite, a bien évolué !

Ça a fini par dériver sur une analyse complète d'un source pour y localiser les objets, les étiquettes et les variables.

Je crois que je vais m'en tenir à ceci: liste complète des variables, étiquettes et objets, leurs n°s de lignes de déclaration et de lignes d'utilisation, au moins pour les variables et étiquettes.
En ce qui concerne les objets on ne peut pas en avoir la liste complète, si certains sont déclarés en boucle avec une variable, par exemple.
Je n'irai pas plus loin que ceci, sauf correction d'erreurs ou omissions, libre à chacun de faire ce qu'il voudra des résultats obtenus:
Code:
' Anasource.bas: liste des variables, objets, étiquettes du dernier source enregistré
DIM f$, fm$, a$, b$, c$, a1$, i%, k%, k1%, k2%, nl%, nvar%, neti%, nobj%, ign%, n%
DIM u%, tob%, v$, lv%, sva$, dir$
DIM objn$(30), var$(200), eti$(100), obj$(100)
LABEL ra, rb, rc, rd, re, rf, rg, rh, Suit1, Suit2, Suit3, Suit4, Suit5
LABEL Tri, Misfo, Recvar, rcvs, Receti, rces, Instrs, Mids, Trace
error_french: on_error_goto Trace
DATA "FORM ","BUTTON ","CHECK ","CONTAINER ","DLIST ","LIST ","EDIT ","MEMO "
DATA "OPEN_DIALOG ","TIMER ","PICTURE ","ALPHA ","COMBO ","MOVIE ","GRID "
DATA "OPTION ","SCENE2D ","SCENE3D","SCROLL_BAR ","SOUND ","SPIN ","SPRITE "
DATA "#"
tob% = 0: READ a$
WHILE a$ <> "#": tob% = tob% + 1: objn$(tob%) = a$: READ a$ : END_WHILE

' analyse du dernier source qui a été enregistré:
dir$ = "C:\LANGAGES\Panoramic": ' répertoire des sources
fm$ = "C:\TEMP\tt.tmp": ' fichier de manoeuvre

EXECUTE_WAIT "Cmd.exe /C DIR " + dir$ + "\*.bas /O:-D /B >" + fm$
FILE_OPEN_READ 1, fm$
FILE_READLN 1, f$: FILE_CLOSE 1: FILE_DELETE fm$
' f$ = "C:\LANGAGES\Panoramic\Etiquette.bas": ' ***** SOURCE A ANALYSER *****

PRINT "- Programme source: " + f$
nvar% = 0: neti% = 0: nobj% = 0
' ***** VARIABLES DÉCLARÉES (DIM) *****************************************
PRINT "Recherche des variables déclarées..."
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(UPPER$(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) ***********************************
PRINT "Recherche des labels déclarées..."
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(UPPER$(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
' ***** OBJETS DÉCLARÉS *******************************************
PRINT "Recherche des objets déclarés..."
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 Suit3
    IF INSTR(UPPER$(a$), "DATA ") > 0 THEN GOTO Suit3
    IF INSTR(UPPER$(a$), "DIM ") > 0 THEN GOTO Suit3
    IF INSTR(UPPER$(a$), "LABEL ") > 0 THEN GOTO Suit3
    FOR i% = 1 TO tob%
        v$ = objn$(i%): lv% = LEN(v$)
        u% = 1
re:
        b$ = v$: GOSUB Instrs: k% = k1%
        IF k% > 0
            IF k% > 1
                n% = ASC(MID$(a$, k%-1, 1))
                if n%>32 then goto rg
            END_IF
            u% = k%: b$ = ":": GOSUB Instrs
            IF k1% > 0
                c$ = MID$(a$, k%+lv%, k1%-k%-lv%)
            ELSE
                k% = k% + lv%: GOSUB Mids: c$ = b$
            END_IF
            c$ = TRIM$(c$)
            nobj% = nobj% + 1: obj$(nobj%) = v$ + c$ + " ["+STR$(nl%)+"]"
rg:
            IF k1% > 0 THEN u% = k1%+1: GOTO re
        END_IF
    NEXT i%
Suit3:
END_WHILE
FILE_CLOSE 1
' remise en forme des déclarations de tableaux à double entrée
' (remplacement des crochets par des parenthèses)
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 THEN a$ = LEFT$(a$, k%-1) + "," + MID$(a$, k%+1, LEN(a$)-k%)
        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%
PRINT "Tri alphabétique des résultats..."
GOSUB Tri

' ajout des crochets autour des numéros de lignes
FOR i% = 1 TO nvar%
    var$(i%) = LEFT$(var$(i%), LEN(var$(i%))-5) + " [" + TRIM$(RIGHT$(var$(i%),5)) + "]"
NEXT i%
FOR i% = 1 TO neti%
    eti$(i%) = LEFT$(eti$(i%), LEN(eti$(i%))-5) + " [" + TRIM$(RIGHT$(eti$(i%),5)) + "]"
NEXT i%

' *****  RECHERCHE DES VARIABLES DANS LE CODE *******************************
PRINT "Recherche des variables dans le code..."
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 Suit4
    k% = INSTR(UPPER$(a$), "DIM ")
    IF k% > 0
        ' c'est une ligne de DIM
        a1$ = "": IF k% > 1 THEN a1$ = LEFT$(a$, k%-1)
        b$ = MID$(a$, k%, LEN(a$)-k%+1)
        k1% = INSTR(b$, ":")
        IF k1% > 0
            a$ = a1$ + MID$(b$, k1%, LEN(b$)-k1%+1)
        ELSE
            a$ = a1$
        END_IF
        IF TRIM$(a$) = "" THEN GOTO Suit4
    END_IF
    FOR n% = 1 TO nvar%
        v$ = var$(n%): k% = INSTR(v$, " "): v$ = LEFT$(v$, k%-1)
        GOSUB Recvar
        IF ign% = 0 THEN var$(n%) = var$(n%) + "," + STR$(nl%)
    NEXT n%
Suit4:
END_WHILE
FILE_CLOSE 1

' ***** RECHERCHE DES APPELS AUX LABELS DANS LE CODE ************************
PRINT "Recherche des labels dans le code..."
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 Suit5
    k% = INSTR(UPPER$(a$), "LABEL "): IF k% > 0 THEN GOTO Suit5
    FOR i% = 1 TO neti%
        v$ = eti$(i%): k% = INSTR(v$, " "): v$ = LEFT$(v$, k%-1)
        GOSUB Receti
        IF ign% = 0 THEN eti$(i%) = eti$(i%) + "," + STR$(nl%)
    NEXT i%
Suit5:
END_WHILE
FILE_CLOSE 1
   
' ***************************************************************************

' ***** AFFICHAGE SOMMAIRE DES RÉSULTATS ************************************
HEIGHT 0, SCREEN_Y-30: WIDTH 0, 900: CLS
LIST 1: HEIGHT 1, SCREEN_Y-80: WIDTH 1, 880
FONT_NAME 1, "Lucida Console": FONT_SIZE 1,9
ITEM_ADD 1, "- " +f$ + " -"
a$ = " Total = " + STR$(nvar%) + " variables, " + STR$(neti%) + " étiquettes, "
a$ = a$ + STR$(nobj%) + " objets."
ITEM_ADD 1, a$
FOR i% = 1 TO nvar%
    ITEM_ADD 1, var$(i%)
NEXT i%
ITEM_ADD 1, " - ÉTIQUETTES -"
FOR i% = 1 TO neti%
    ITEM_ADD 1, eti$(i%)
NEXT i%
ITEM_ADD 1, " - OBJETS -"
FOR i% = 1 TO nobj%
    ITEM_ADD 1, obj$(i%)
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$, CHR$(34)+CHR$(39)+CHR$(32)+CHR$(34)): IF k% = 1 THEN ign% = 1: RETURN
k% = INSTR(a$, CHR$(39)+CHR$(32))
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)
u% = 1
rh:
b$ = CHR$(34): GOSUB Instrs: k% = k1%
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)
        u% = k%+2: GOTO rh
    END_IF
END_IF
RETURN

Recvar:
' Recherche de la variable v$ dans a$
sva$ = a$: ign% = 0
k% = INSTR(v$, "("): ' tableaux
IF k% > 0 THEN v$ = LEFT$(v$, k%)
lv% = LEN(v$)
rf:
k% = INSTR(a$, v$): IF k% < 1 THEN ign% = 1: GOTO rcvs
IF k% > 1
    c$ = MID$(a$, k%-1, 1): ' c'est pas le 1er, caractère précédent
    IF c$<>" " AND c$<>"+" AND c$<>"-" AND c$<>"*" AND c$<>"/"
        IF k% = LEN(a$) THEN ign% = 1: GOTO rcvs
        a$ = MID$(a$, k%+1, LEN(a$)-k%): GOTO rf
    END_IF
END_IF
IF k% <= (LEN(a$)-lv%) AND RIGHT$(v$, 1) <> "("
    c$ = MID$(a$, k%+lv%, 1): ' c'est pas le dernier ni tableau, caractère suivant
    IF c$<>" "AND c$<>"+"AND c$<>"-" AND c$<>"*" AND c$<>"/"AND c$<>":"
        a$ = MID$(a$, k%+1, LEN(a$)-k%): GOTO rf
    END_IF
END_IF
rcvs:
a$ = sva$
RETURN

Receti:
' Recherche de l'étiquette v$ dans a$
sva$ = a$: ign% = 0: lv% = LEN(v$)
k% = INSTR(a$, v$)
IF k% = 1 AND a$ = v$ THEN GOTO rces: ' étiquette en place
IF k% < 6 THEN ign% = 1: GOTO rces
IF MID$(a$, k%-1, 1) <> " " THEN ign% = 1: GOTO rces
IF LEN(a$) < (k% + lv%) THEN GOTO rces
c$ = MID$(a$, k%+lv%, 1)
IF c$ <> ":" AND c$ <> " " THEN ign% = 1: GOTO rces
rces:
a$ = sva$
RETURN

Instrs:
' recherche de b$ dans a$ à partir de u% -> k1%
IF u% <= LEN(a$)
    c$ = MID$(a$, u%, LEN(a$)-u%+1)
    k1% = INSTR(c$, b$)
    IF k1% > 0 THEN k1% = k1% + u% - 1
ELSE
    k1% = 0
END_IF
RETURN

Mids:
' renvoie la chaîne b$, reste de a$ à partir de k% (y compris vide)
IF k% <= LEN(a$)
    b$ = MID$(a$, k%, LEN(a$)-k%+1)
ELSE
    b$ = ""
END_IF
RETURN

Trace:
Message "Erreur ligne " + str$(error_line)+": "+error_type$
TERMINATE

Je pense que Nardo cherche à faire quelque chose de plus sophistiqué, et je suis sa progression avec intérêt !
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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 15:33

Bonjour à tous !

Je viens de mettre la dernière version en ligne...
Normalement il ne devrait pas y avoir de problème.
Mais on est pas à l'abri d'un accident : a utiliser dans un premier temps avec précaution
(pensez à faire un backup du source que vous voulez tester dans un autre répertoire).
L'idéal serait que je fasse une petite dll qui me renvoie la date et l'heure d'un fichier (cela serait plus sécuritaire)

@JL35: Je vais regarder ton code. Est-ce que tu m'autorises à inclure ta recherche de variable dans mon prog ?

Dans le cas d'une init d'objet dans une boucle, lorsque la déclaration est faite de cette manière:
for i%=12 to 23:EDIT i%: Next i%
cela ne pose pas de problème.

Là où il faut que je travaille c'est sur ces cas :
cas 1 : For i% = Debut% to End% : EDIT i%:Next i%
cas 2 : For i% = Debut% to Debut%+5 : EDIT i%: Next i%
Et peut être l'instruction step qui pourrait se coller au milieu...

Sans compter que les variables peuvent être initialisées par d'autres variables...
Je sens venir un truc récursif (tant que je n'ai pas trouvé une valeur numérique) en tenant compte des expressions (+ ou -)

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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 15:54

Mais certainement cher ami, je te donne toutes les autorisations voulues, avec ma bénédiction par-dessus le marché, c'est une recherche collective (enfin, je vois ça comme ça). J'ai ajouté également la recherche des étiquettes dans le code, comme pour les variables.

Bon courage pour ta recherche des objets, avec la traduction des variables en nombres concrets, ça me paraît extrêmement difficile, pour ne pas dire impossible dans tous les cas... même si pour définir un objet on n'utilise généralement pas une variable tordue dans tous les sens... mais il y a des vicieux.+

Pourquoi avoir à sauvegarder le source que tu analyses ? tu ne le réécris quand même pas ?
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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 16:03

Non... je fais pire !!! Wink

Ton fichier source : j'en fait une copie .bak et le fichier .bas je le détruit !!! c'est comme cela que je détecte la sauvegarde (réapparition du .bas)

Je suis pas trop bourrin : je m'assure qu'en cas de plantage, fermeture, etc... de renommer le .bak en .bas

C'est une solution que m'a trouvé Cosmos (grand merci !, il a toujours une astuce qu'il nous sort de derriere les fagots Wink )

A défaut de mieux, je fais avec...

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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 16:09

Ouille ! gonflés les mecs !
Je dirais bien (je le dis pas fort) que ça me paraît un peu scabreux comme méthode... je n'aime pas trop que l'on tripote mon source à mon insu, sauf pour le lire.
Uniquement parce que tu ne peux pas connaître la date/heure du source sauvegardé ? si c'est seulement ça je préfère la méthode du dir msdos ( /o:-d )...
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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 16:24

Oui ca ne me plais pas non plus... c'est pour cette raison que j'ai hésité à mettre cette version en ligne... mais c'était trop tentant (surtout après avoir fait la petite animation) c'est vraiment classieux... Wink

Pour ceux que ça dérange, il suffit de :

Mettre en commentaire :
ligne 6 : on_close 0,ProgClose
ligne 7 : on_error_goto ProgError
ligne 152 : FILE_DELETE fichier$
ligne 154 : TIMER_ON tFileScan%

Il faut absolument que je fasse cette dll !...
(autrement dis : il faut que je reinstalle delphi) Sad

La méthode du DIR ne me plais pas non plus car la fenêtre DOS à chaque fois apparait au 1er plan et on perd le focus... c'est très pénible quand on tape du code ou que l'on veut cliquer sur un objet...
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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 16:38

Quand même... je vais réessayer, mais je le fais en tête de mon programme, la fenêtre est très fugitive et je ne vois pas que l'on perde le focus.

Il est vrai que je ne fais qu'une seule fois, au lancement du programme, alors que toi si j'ai bien compris c'est périodiquement avec le timer, là effectivement c'est moins joli et un peu agaçant sans doute.

Peut-être faire un petit exe dans un autre langage qui mettrait la date/heure dans le clipboard, mais c'est apparemment ce que tu veux faire avec ta dll.
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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 17:08

Oui c'est exactement ça mais sans utiliser le clipboard (car il ne faut perturber l'éditeur pano)
si tu es en train de taper du code et que tu utilises le clipboard pour déplacer des lignes et que le timer met à la place la date du fichier :
il ne te reste plus que les yeux pour pleurer ! Very Happy
Je suis en train de telecharger la version 6 de delphi...
On va voir si j'arrive à faire cette dll....
Les sources de la dll seront également sur le site...
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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 17:21

zut je viens justement d'écrire un petit utilitaire qui met date/heure d'un fichier donné dans le clipboard, silencieusement... j'étais tout content.
Je peux mettre le résultat dans un fichier temporaire, mais c'est plus lourd qu'une dll qui rend le résultat directement.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Nombre d'objets  - Page 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 17:35

Je viens d'essayer ton code Nardo26, j'ai transpiré un peu, j'avais cru avoir perdu le code source.

Une suggestion: tu pourrais faire une sauvegarde automatique en .BAK du code chargé par Load et ajouter un bouton "SAVE .bas" dès qu'une modif est faite.

A+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Nombre d'objets  - Page 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 17:38

Tout bien réfléchi la sauvegarde en bas on l'a dèja. il faudrait simplement une sauvegarde bak au chargement.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

Nombre d'objets  - Page 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 17:38

Tout bien réfléchi la sauvegarde en bas on l'a dèja. il faudrait simplement une sauvegarde bak au chargement.


Dernière édition par Jean Claude le Ven 29 Oct 2010 - 17:40, édité 1 fois (Raison : Je bégaye)
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 4 Empty
MessageSujet: Re: Nombre d'objets    Nombre d'objets  - Page 4 EmptyVen 29 Oct 2010 - 18:14

@jean claude : La sauvegarde en .bak est deja présente ! c'est la 1ere chose que je fais après le chargement

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Contenu sponsorisé





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

Revenir en haut Aller en bas
 
Nombre d'objets
Revenir en haut 
Page 4 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: