Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Nombre d'objets | |
|
+4Jack 659_minifly Nardo26 JL35 8 participants | |
Auteur | Message |
---|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Jeu 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 … (une étiquette c'est un nom suivi de ':' et ça c'est difficile à notepad++ de pouvoir l'isoler par rapport à un ':' entre des instructions...) | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nombre d'objets Jeu 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.
| |
| | | Invité Invité
| Sujet: Re: Nombre d'objets Jeu 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. |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Jeu 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.... @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 | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nombre d'objets Jeu 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 ! | |
| | | Invité Invité
| Sujet: Re: Nombre d'objets Jeu 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. |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Jeu 28 Oct 2010 - 20:13 | |
| Et ton vœux de silence ? 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... A+ | |
| | | Invité Invité
| Sujet: Re: Nombre d'objets Jeu 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é.
|
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Jeu 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! | |
| | | dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: Nombre d'objets Ven 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 | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Ven 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 : 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 ). 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... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Nombre d'objets Ven 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. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nombre d'objets Ven 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 ! | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Ven 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 -)
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nombre d'objets Ven 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 ? | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Ven 29 Oct 2010 - 16:03 | |
| Non... je fais pire !!! 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 ) A défaut de mieux, je fais avec... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nombre d'objets Ven 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 )... | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Ven 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... 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) 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... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nombre d'objets Ven 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. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Ven 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 ! 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... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Nombre d'objets Ven 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. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Nombre d'objets Ven 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+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Nombre d'objets Ven 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. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Nombre d'objets Ven 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) | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Nombre d'objets Ven 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
| |
| | | Contenu sponsorisé
| Sujet: Re: Nombre d'objets | |
| |
| | | | Nombre d'objets | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |