FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» MasterMind Alphabétique Français
par Jicehel Aujourd'hui à 22:37

» KGF_dll - nouvelles versions
par Laurent Aujourd'hui à 22:25

» Windows Defender détecte un trojan dans Panoramic
par Jean Claude Aujourd'hui à 22:06

» Sleep ; une alternative de PAUSE
par JL35 Aujourd'hui à 21:49

» New: Maître-expert alphabétique
par Marc37 Aujourd'hui à 16:07

» PPE...le retour ?...
par Jicehel Aujourd'hui à 15:17

» Histoire d' en rire 2
par Yannick Aujourd'hui à 14:42

» GetParent : Utile pas pour deux sous
par papydall Hier à 15:44

» Quelle option est cochée ?
par Yannick Hier à 3:33

» Univers sans fin
par jjn4 Lun 20 Fév 2017 - 17:55

» Palette de couleurs
par jjn4 Lun 20 Fév 2017 - 17:51

» Sortie de Sub intempestive
par JL35 Dim 19 Fév 2017 - 17:31

» Caracteres de blocs
par Yannick Sam 18 Fév 2017 - 16:04

» KGF.dll et EXCEL
par Jicehel Sam 18 Fév 2017 - 14:38

» Gestion des évènements par une DLL
par Klaus Sam 18 Fév 2017 - 13:50

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Février 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728     
CalendrierCalendrier

Partagez | 
 

 Mon interface Panoramic

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2, 3, 4  Suivant
AuteurMessage
JL35



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

MessageSujet: Re: Mon interface Panoramic   Sam 11 Oct 2014 - 23:36

Mais non ce n'est pas difficile, un peu de logique, et, surtout, beaucoup de loisirs...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
mindstorm



Nombre de messages : 521
Age : 48
Localisation : charente
Date d'inscription : 13/02/2013

MessageSujet: Re: Mon interface Panoramic   Lun 13 Oct 2014 - 17:54

merci de tes encouragements JL35
toute fois tu as mis le doigt sur le problème...
LE TEMPS LIBRE
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Mon interface Panoramic   Lun 13 Oct 2014 - 23:06

Et ça, on ne peut pas le partager... Crying or Very sad
Alors n'hésite pas à mettre à contribution ceux qui en ont, aucune question n'est superflue quand on commence Very Happy

Pour en revenir au sujet initial de ce post, le gros morceau est le programme qui correspond au bouton 'Aide'.
Ce programme extrait les informations d'aide sur les mots-clés incluses dans Panoramic_Editor, en tentant de les présenter de façon indépendante, peut-être plus accessible ponctuellement.

Il y a plusieurs petites particularités, avec quelques fichiers annexes construits au fil du temps qui sont là pour faciliter les choses.
A priori je ne le mets pas ici, sauf demande expresse, mais dans ce cas il y aura des aménagements individuels à faire, rien de bien sorcier, mais bon, ça risque de ne pas marcher avec ma version standard à moi.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Mon interface Panoramic   Mer 15 Oct 2014 - 15:27

Finalement, j'ai bien simplifié mon programme d'aide, et il est facilement améliorable au goût de chacun.
A l'aide de l'utilitaire Reshacker, le programme (une Sub) extrait de Panoramic Editor:
1) Un fichier liste brute des mots-clés
2) Un fichier texte global contenant la documentation pour tous les mots-clés.
Cette opération est faite au lancement initial, avec création du répertoire contenant et des deux fichiers ci-dessus, avec archivage de la date du Panoramic_Editor utilisé.
A chaque lancement ultérieur, le programme compare la date du Panoramic_Editor actuel avec la date archivée, et reconstitue entièrement les deux fichiers en cas d'éditeur plus récent.

Il faut donc disposer de ResHacker, et renseigner les trois chemins en tête du programme:
- Panoramic_Editor.exe
- Répertoire des sources Panoramic
- ResHacker.exe (ici par exemple: http://www.pendriveapps.com/resource-hacker-exe-editor/ ... avec plein d'autres petits programmes, à voir).

J'ai gardé la possibilité d'ajouter pour chaque mot-clé un commentaire personnel (précisions, astuces...): bouton 'Ajouter': création initiale ou ajouts dans un commentaire existant.
Ces commentaires éventuels sont archivés dans un fichier particulier à chaque mot-clé, du nom du mot-clé et de suffixe .txu.

Il suffira donc, après mise au point, de faire un exécutable de ce programme, pour pouvoir l'appeler depuis n'importe où.
Code:

' ********** Création et consultation des fichiers d'aide par mot-clé **********
LABEL Afm, afm1, Perso
DIM Edp$,Rhk$,Pan$,ra$, fl$, fa$, fp$, i%, a$, b$,q$,fct$(10)
' ============================ CHEMINS À PRÉCISER ==============================
Edp$ = "C:\Program Files (x86)\Panoramic Editor\PANORAMIC_EDITOR.exe": ' Éditeur
Rhk$ = "C:\UTIL\ResHacker.exe ": ' *** ResHacker: extraction des mots-clés <****
Pan$ = "C:\PANORAMIC": ' Répertoire des sources Panoramic <********************
' ==============================================================================
ra$ = Pan$+"Manuel": ' Répertoire de la documentation Panoramic (créé) <=======
fl$ = ra$+"ListeMC.txt": ' liste brute des mots-clés (créé)
fa$ = ra$+"Aide.txt": ' doc des mots-clés (créé)
DATA "","","DÉFINITION","FONCTION","SYNTAXE","USAGE","CAS D'ERREUR"
DATA "EXEMPLES","EN RAPPORT"
FOR i% = 1 TO 9: READ fct$(i%): NEXT i%
q$ = CHR$(34)

WIDTH 0,800: HEIGHT 0,SCREEN_Y-50: BORDER_SMALL 0
LIST 1: WIDTH 1,200: HEIGHT 1,HEIGHT(0)-35: FONT_NAME 1,"Consolas"
color 1,200,255,200: ON_CLICK 1,Afm: font_size 1,10
MEMO 2: LEFT 2,WIDTH(1): WIDTH 2,WIDTH(0)-WIDTH(1)-16: HEIGHT 2,HEIGHT(1)
color 2,255,255,200: FONT_NAME 2,"Consolas": FONT_SIZE 2,10
BAR_VERTICAL 2
MEMO 3: HIDE 3
BUTTON 4: TOP 4,HEIGHT(0)-60: LEFT 4,WIDTH(0)-120: CAPTION 4,"Ajouter"
ON_CLICK 4,Perso
IF DIR_EXISTS(ra$) = 0 THEN DIR_MAKE fa$

EXECUTE_WAIT "CMD.exe /C DIR "+q$+Edp$+q$+" /TC | clip"
a$ = CLIPBOARD_STRING_PASTE$: i% = INSTR(a$,"/")
i% = VAL(MID$(a$,i%+4,4)+MID$(a$,i%+1,2)+MID$(a$,i%-2,2)): ' date Editeur actuel
b$ = "0"
IF FILE_EXISTS(fa$) = 1
    FILE_OPEN_READ 1,fa$: FILE_READLN 1,b$: FILE_CLOSE 1
    b$ = LEFT$(b$,8): ' date de la deernière mise à jour (forme: aaaammjj)
END_IF
IF VAL(b$) < i%
    MotsCles(fl$,fa$): ' Création initiale, ou mise à jour de la doc
END_IF
FILE_LOAD 3,fl$
FOR i% = 1 TO COUNT(3): ITEM_ADD 1,ITEM_READ$(3,i%): NEXT i%
SORT 1
a$ = "#INCLUDE "+q$+"F"+q$: GOSUB afm1
END
' ==============================================================================
Afm:
a$ = ITEM_INDEX$(1)
afm1:
FILE_OPEN_READ 1,fa$
FILE_READLN 1,b$: WHILE MID$(b$,4,50)<>a$: FILE_READLN 1,b$: END_WHILE
CLEAR 2
ITEM_ADD 2,STRING$(20," ")+MID$(b$,4,50)
FILE_READLN 1,b$
WHILE LEFT$(b$,3)<>"1_ " AND FILE_EOF(1)=0
    IF MID$(b$,2,2) = "_ "
        i% = VAL(LEFT$(b$,1)): ITEM_ADD 2,""
        IF i%>2 THEN ITEM_ADD 2,"==================== "+fct$(i%)+" ===================="
        b$ = MID$(b$,4,200)
    END_IF
    ITEM_ADD 2,b$
    FILE_READLN 1,b$
END_WHILE
FILE_CLOSE 1
fp$ = ra$+a$+".txu"
IF FILE_EXISTS(fp$) = 1: ' fichier de commentaire perso pour ce mot-clé
    ITEM_ADD 2,""
    ITEM_ADD 2,"*=*=*=*=*=*=*=*=*=*=*=* PERSO *=*=*=*=*=*=*=*=*=*=*=*"
    FILE_OPEN_READ 1,fp$
        WHILE FILE_EOF(1) = 0
            FILE_READLN 1,b$: ITEM_ADD 2,b$
        END_WHILE
    FILE_CLOSE 1
END_IF
RETURN
' ==============================================================================
Perso:
' commentaires perso
a$="Notepad.exe "+q$+fp$+q$
EXECUTE_WAIT "CMD.exe /C "+a$
RETURN
' ==============================================================================
SUB MotsCles(Edp$,Rhk$,fl$,fa$)
' Liste des mots-clés extraite de Panoramic_Editor.exe (chemins à adapter).
' Paramètres: Edp$ = chemin de Panoramic_Editor
'             Rhk$ = chemin de ResHacker (désassembleur des mots-clés)
' Résultat:   fl$ (liste brute des mots-clés)
'             fa$ (aide complète, par mot-clé)
DIM_LOCAL rm$,Rpm$,fz$,a$,q$,k%,nmc%
q$ = CHR$(34)
rm$ = "C:\TEMP": ' Répertoire de travail <===== A PRÉCISER (Jean-Claude ?) ====
fz$ = rm$ + "ppp.res": ' fichier provisoire résultat de ResHacker
Rpm$ = "-extract "+q$+Edp$+q$+", "+q$+fz$+q$+", RCData, KEYWORDS, 1036"
EXECUTE_WAIT Rhk$+Rpm$: ' -> résultat dans fz$
FILE_OPEN_READ 8, fz$: FILE_OPEN_WRITE 9,fa$: FILE_OPEN_WRITE 6,fl$
EXECUTE_WAIT "CMD.exe /C DIR "+q$+Edp$+q$+" /TC | clip"
a$ = CLIPBOARD_STRING_PASTE$: k% = INSTR(a$,"/")
a$ = MID$(a$,k%+4,4)+MID$(a$,k%+1,2)+MID$(a$,k%-2,2)
FILE_WRITELN 9,a$+" * date de Panoramic_Editor"
FILE_READLN 8,a$: nmc% = 0
WHILE FILE_EOF(8) = 0
    FILE_READLN 8,a$
    IF LEN(a$) = 1 AND NUMERIC(a$) = 1
        WHILE a$<>"1": FILE_READLN 8,a$: END_WHILE: FILE_WRITELN 9,"": ' saut de ligne
        FILE_READLN 8,a$: FILE_WRITELN 9,"1_ "+a$: nmc%=nmc%+1: ' MOT-CLÉ COMPLET
        IF LEFT$(a$,1) = "("
            IF INSTR(a$,"STEP") >0
                a$ = "STEP"
            ELSE
                a$ = "TO"
            END_IF
        END_IF
        FILE_WRITELN 6,a$
        WHILE a$<>"2": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"2_ "+a$: ' RÉSUMÉ
        WHILE a$<>"3": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"3_ "+a$: ' DÉFINITION
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"4": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"4_ "+a$: ' FONCTION
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"5": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"5_ "+a$: ' SYNTAXE
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"6": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"6_ "+a$: ' USAGE
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"7": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"7_ "+a$: ' CAS D'ERREUR
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"8": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"8_ "+a$: ' EXEMPLES
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"9": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"9_ "+a$: ' EN RAPPORT
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
    END_IF
END_WHILE
FILE_CLOSE 8: FILE_CLOSE 9: FILE_CLOSE 6
FILE_DELETE fz$
END_SUB
' ==============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel



Nombre de messages : 5782
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Mon interface Panoramic   Mer 15 Oct 2014 - 18:19

Je trouve ton fichier source très interessant et après chacun peu le personaliser.
Personellement, par exemple, j'utiliserais l'éditeur de Klaus et il y a donc tout une partie de ton interface que je verrais plutôt intégrée directement dans l'éditeur (Nouveau, possibiliter de trier les fichier sources par date, par nom ou de faire une recherche).
Les accès aux fichiers d'aide sont déjà intégrés mais le système d'ajout de commentaires persos qui viennent s'afficher indépendamment de l'extraction des mots clés est une très bonne idée permettant une maintenance aisée lors des montées de version.
Pareil la consultation de la bibliothèque de sub, pour moi, ce sera plus dans l'éditeur.
Après, il y a la consultation du forum, pour moi, ça peut être un programme complémentaire lancé depuis l'éditeur.
Je n'adopterais donc pas cette interface même si je la trouve très bien faites car je pense que je retrouverais tout mes petits dans le nouvel éditeur. Par contre, il y a des tas de bonnes idées à piocher dans ton programme alors merci encore de l'avoir partagé.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur En ligne
JL35



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

MessageSujet: Re: Mon interface Panoramic   Mer 15 Oct 2014 - 18:45

Ma foi, c'est fait dans cet esprit-là, le partage, à charge pour chacun d'en prendre ce qui l'intéresse, le code est suffisamment simple pour être adapté à tous les goûts et situations particulières.
Là je regarde pour l'extraction de la doc de Panoramic Editor sans se servir de ResHacker, uniquement avec les moyens du bord... mais là c'est plus un jeu qu'autre chose.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude



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

MessageSujet: Re: Mon interface Panoramic   Mer 15 Oct 2014 - 18:59

Salut à tous,

Moi je préfère essayer avant, je ferais des commentaires après.

J'ai un souci, çà marche pas. Ça bloque en ligne 26, "Impossible to create directorie"
Code:
IF DIR_EXISTS(ra$) = 0 THEN DIR_MAKE fa$
Regarde cette ligne 26 (je la trouve zarbi), tu testes l’existence d'un répertoire pour en fabriquer un autre ?.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur En ligne
papydall



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

MessageSujet: Re: Mon interface Panoramic   Mer 15 Oct 2014 - 19:58

Hello JL35

J’ai adapté les 3 chemins qui mènent à Rome (à mes dossiers je veux dire !) ; après le Run , message d’erreur et ….
Avec méthode, j’analyse le code pour voir ce qui ne va pas :
Ligne 26
Code:
IF DIR_EXISTS(ra$) = 0 THEN DIR_MAKE fa$
Jean Claude la trouve zarbi; je la trouve chelou, moi  Laughing
Je la corrige ainsi
Code:
IF DIR_EXISTS(fa$) = 0 THEN DIR_MAKE fa$

Ligne 37
Code:
MotsCles(fl$,fa$): ' Création initiale, ou mise à jour de la doc
L'appel de la SUB nécessite 4 paramètres et non 2
A remplacer par
Code:
MotsCles(Edp$,Rhk$,fl$,fa$) : ' Création initiale, ou mise à jour de la doc

LIGNE 91
Code:
Rpm$ = "-extract "+q$+Edp$+q$+", "+q$+fz$+q$+", RCData, KEYWORDS, 1036"
Il manque un espace avant -extract …
Code:
Rpm$ = " -extract "+q$+Edp$+q$+", "+q$+fz$+q$+", RCData, KEYWORDS, 1036"

Après ces corrections, j’exécute le programme :Tout semble bon. La fenêtre Resource Hacker s’ouvre avec les menus
File Edit View Action Help



Devant une telle situation que dois-je faire ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



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

MessageSujet: Re: Mon interface Panoramic   Mer 15 Oct 2014 - 22:15

J'arrive ! (j'étais sur autre chose, enfin, du même genre)
Jean-Claude et Papydall, il faut lire évidemment (ligne 26):
Code:
IF DIR_EXISTS(ra$) = 0 THEN DIR_MAKE ra$

bien ra$ (r comme répertoire) et non fa$ (f comme fichier)

@papydall
Il y a évidemment 4 paramètres comme tu as vu, pour la sub
Code:
SUB MotsCles(Edp$,Rhk$,fl$,fa$)
Quant à l'espace manquant, non chez moi il ne manque pas parce qu'il figure dans la variable Rhk$, à la fin:
Code:
Rhk$ = "C:\UTIL\ResHacker.exe "
Tu ne devrais pas avoir la fenêtre de ResHacker qui s'ouvre, ça doit être transparent comme exécution...
Le seul affichage devrait être celui-ci, en fin d'exécution:

Je remets le programme complet ici (mais il faudra refaire les chemins, désolé), vérifié, ça marche bien chez moi:
Code:
' ********** Création et consultation des fichiers d'aide par mot-clé **********
LABEL Afm, afm1, Perso
DIM Edp$,Rhk$,Pan$,ra$, fl$, fa$, fp$, i%, a$, b$,q$,fct$(10)
' ============================ CHEMINS À PRÉCISER ==============================
Edp$ = "C:\Program Files (x86)\Panoramic Editor\PANORAMIC_EDITOR.exe": ' Éditeur
Rhk$ = "C:\UTIL\ResHacker.exe ": ' *** ResHacker: extraction des mots-clés <****
Pan$ = "C:\PANORAMIC\": ' Répertoire des sources Panoramic <********************
' ==============================================================================
ra$ = Pan$+"Manuel": ' Répertoire de la documentation Panoramic (créé) <=======
fl$ = ra$+"ListeMC.txt": ' liste brute des mots-clés (créé)
fa$ = ra$+"Aide.txt": ' doc des mots-clés (créé)
DATA "","","DÉFINITION","FONCTION","SYNTAXE","USAGE","CAS D'ERREUR"
DATA "EXEMPLES","EN RAPPORT"
FOR i% = 1 TO 9: READ fct$(i%): NEXT i%
q$ = CHR$(34)

WIDTH 0,800: HEIGHT 0,SCREEN_Y-50: BORDER_SMALL 0
LIST 1: WIDTH 1,200: HEIGHT 1,HEIGHT(0)-35: FONT_NAME 1,"Consolas"
color 1,200,255,200: ON_CLICK 1,Afm: font_size 1,10
MEMO 2: LEFT 2,WIDTH(1): WIDTH 2,WIDTH(0)-WIDTH(1)-16: HEIGHT 2,HEIGHT(1)
color 2,255,255,200: FONT_NAME 2,"Consolas": FONT_SIZE 2,10
BAR_VERTICAL 2
MEMO 3: HIDE 3
BUTTON 4: TOP 4,HEIGHT(0)-60: LEFT 4,WIDTH(0)-120: CAPTION 4,"Ajouter"
ON_CLICK 4,Perso
IF DIR_EXISTS(ra$) = 0 THEN DIR_MAKE ra$

EXECUTE_WAIT "CMD.exe /C DIR "+q$+Edp$+q$+" /TC | clip"
a$ = CLIPBOARD_STRING_PASTE$: i% = INSTR(a$,"/")
i% = VAL(MID$(a$,i%+4,4)+MID$(a$,i%+1,2)+MID$(a$,i%-2,2)): ' date Editeur actuel
b$ = "0"
IF FILE_EXISTS(fa$) = 1
    FILE_OPEN_READ 1,fa$: FILE_READLN 1,b$: FILE_CLOSE 1
    b$ = LEFT$(b$,8): ' date de la deernière mise à jour (forme: aaaammjj)
END_IF
IF VAL(b$) < i%
    MotsCles(Edp$,Rhk$,fl$,fa$): ' Création initiale, ou mise à jour de la doc
END_IF
FILE_LOAD 3,fl$
FOR i% = 1 TO COUNT(3): ITEM_ADD 1,ITEM_READ$(3,i%): NEXT i%
SORT 1
a$ = "#INCLUDE "+q$+"F"+q$: GOSUB afm1
END
' ==============================================================================
Afm:
a$ = ITEM_INDEX$(1)
afm1:
FILE_OPEN_READ 1,fa$
FILE_READLN 1,b$: WHILE MID$(b$,4,50)<>a$: FILE_READLN 1,b$: END_WHILE
CLEAR 2
ITEM_ADD 2,STRING$(20," ")+MID$(b$,4,50)
FILE_READLN 1,b$
WHILE LEFT$(b$,3)<>"1_ " AND FILE_EOF(1)=0
    IF MID$(b$,2,2) = "_ "
        i% = VAL(LEFT$(b$,1)): ITEM_ADD 2,""
        IF i%>2 THEN ITEM_ADD 2,"==================== "+fct$(i%)+" ===================="
        b$ = MID$(b$,4,200)
    END_IF
    ITEM_ADD 2,b$
    FILE_READLN 1,b$
END_WHILE
FILE_CLOSE 1
fp$ = ra$+a$+".txu"
IF FILE_EXISTS(fp$) = 1: ' fichier de commentaire perso pour ce mot-clé
    ITEM_ADD 2,""
    ITEM_ADD 2,"*=*=*=*=*=*=*=*=*=*=*=* PERSO *=*=*=*=*=*=*=*=*=*=*=*"
    FILE_OPEN_READ 1,fp$
        WHILE FILE_EOF(1) = 0
            FILE_READLN 1,b$: ITEM_ADD 2,b$
        END_WHILE
    FILE_CLOSE 1
END_IF
RETURN
' ==============================================================================
Perso:
' commentaires perso
a$="Notepad.exe "+q$+fp$+q$
EXECUTE_WAIT "CMD.exe /C "+a$
RETURN
' ==============================================================================
SUB MotsCles(Edp$,Rhk$,fl$,fa$)
' Liste des mots-clés extraite de Panoramic_Editor.exe (chemins à adapter).
' Paramètres: Edp$ = chemin de Panoramic_Editor
'             Rhk$ = chemin de ResHacker (désassembleur des mots-clés)
' Résultat:   fl$ (liste brute des mots-clés)
'             fa$ (aide complète, par mot-clé)
DIM_LOCAL rm$,Rpm$,fz$,a$,q$,k%,nmc%
q$ = CHR$(34)
rm$ = "C:\TEMP": ' Répertoire de travail <===== A PRÉCISER (Jean-Claude ?) ====
fz$ = rm$ + "ppp.res": ' fichier provisoire résultat de ResHacker
Rpm$ = "-extract "+q$+Edp$+q$+", "+q$+fz$+q$+", RCData, KEYWORDS, 1036"
EXECUTE_WAIT Rhk$+Rpm$: ' -> résultat dans fz$
FILE_OPEN_READ 8, fz$: FILE_OPEN_WRITE 9,fa$: FILE_OPEN_WRITE 6,fl$
EXECUTE_WAIT "CMD.exe /C DIR "+q$+Edp$+q$+" /TC | clip"
a$ = CLIPBOARD_STRING_PASTE$: k% = INSTR(a$,"/")
a$ = MID$(a$,k%+4,4)+MID$(a$,k%+1,2)+MID$(a$,k%-2,2)
FILE_WRITELN 9,a$+" * date de Panoramic_Editor"
FILE_READLN 8,a$: nmc% = 0
WHILE FILE_EOF(8) = 0
    FILE_READLN 8,a$
    IF LEN(a$) = 1 AND NUMERIC(a$) = 1
        WHILE a$<>"1": FILE_READLN 8,a$: END_WHILE: FILE_WRITELN 9,"": ' saut de ligne
        FILE_READLN 8,a$: FILE_WRITELN 9,"1_ "+a$: nmc%=nmc%+1: ' MOT-CLÉ COMPLET
        IF LEFT$(a$,1) = "("
            IF INSTR(a$,"STEP") >0
                a$ = "STEP"
            ELSE
                a$ = "TO"
            END_IF
        END_IF
        FILE_WRITELN 6,a$
        WHILE a$<>"2": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"2_ "+a$: ' RÉSUMÉ
        WHILE a$<>"3": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"3_ "+a$: ' DÉFINITION
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"4": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"4_ "+a$: ' FONCTION
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"5": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"5_ "+a$: ' SYNTAXE
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"6": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"6_ "+a$: ' USAGE
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"7": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"7_ "+a$: ' CAS D'ERREUR
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"8": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"8_ "+a$: ' EXEMPLES
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"9": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"9_ "+a$: ' EN RAPPORT
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
    END_IF
END_WHILE
FILE_CLOSE 8: FILE_CLOSE 9: FILE_CLOSE 6
FILE_DELETE fz$
END_SUB
' ==============================================================================


Dernière édition par JL35 le Mer 15 Oct 2014 - 22:47, édité 3 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Mon interface Panoramic   Mer 15 Oct 2014 - 22:21

Et maintenant, une Sub qui fait exactement la même chose que ResHacker, mais en pur Panoramic: extraction de la doc des mots-clés depuis Panoramic_Editor.
Avec un petit programme pour appeler la sub et voir le résultat.
INCONVÉNIENT: c'est long (chez moi, 26 secondes), mais il est vrai qu'on ne le fait qu'une fois, et à chaque changement de l'Éditeur. C'est à voir, c'était surtout pour voir si je pouvais le faire.
Code:
DIM Edp$, fr$
' Chemins à vérifier:
Edp$ = "C:\Program Files (x86)\Panoramic Editor\PANORAMIC_EDITOR.exe"
fr$ = "C:\TEMP\ppp.txt"
print time$
Extract_MC(Edp$,fr$)
print time$
execute "Notepad.exe " + fr$: ' pour voir...
TERMINATE
' ==============================================================================
SUB Extract_MC(Edp$,fr$)
' Extraction de la doc des mots-clés de Panoramic_Editor (chemin Edp$)
' Résultat brut dans le fichier texte fr$
DIM_LOCAL q$,ht1$,ht2$,p1%,p2%,lg%,nb%,rs%,i%,k%,va$,v%(2000)
q$ = CHR$(34)
ht1$ = "3C2F48544D4C3E0D0A00300D0A": ' <HTML>OD OA 00 30 0D 0A
ht2$ = "0D0A460D0A460D0A46": ' fin
CURSOR_HOURGLASS 0
FILEBIN_OPEN_READ 1,q$+Edp$+q$
p1% = 0: FILEBIN_HEXA_READ 1,2000,va$: k% = INSTR(va$,ht1$)
WHILE k% = 0
    p1%=FILEBIN_POS(1): ' print hex$(p1%)
    FILEBIN_HEXA_READ 1,2000,va$: k% = INSTR(va$,ht1$)
END_WHILE
p2%=p1%+2000
p1% = p1%+(k%-1)/2+10: ' début de zone doc mots-clés
FILEBIN_HEXA_READ 1,2000,va$: k% = INSTR(va$,ht2$)
WHILE k% = 0
    p2%=FILEBIN_POS(1)
    FILEBIN_HEXA_READ 1,2000,va$: k% = INSTR(va$,ht2$)
END_WHILE
p2%=p2%+(k%-1)/2
lg% = p2%-p1%: ' longueur de la zone doc mots-clés
nb% = INT(lg%/2000): rs% = lg%-nb%*2000
IF FILE_EXISTS(fr$)=1 THEN FILE_DELETE fr$
FILEBIN_OPEN_WRITE 2,fr$: FILEBIN_POSITION 1,p1%
FOR i% = 1 TO nb%
    FILEBIN_BLOCK_READ 1,2000,v%(0): FILEBIN_BLOCK_WRITE 2,2000,v%(0)
NEXT i%
IF rs% > 0 THEN FILEBIN_BLOCK_READ 1,rs%,v%(0): FILEBIN_BLOCK_WRITE 2,rs%,v%(0)
FILEBIN_CLOSE 1: FILEBIN_CLOSE 2
CURSOR_DEFAULT 0
END_SUB
' ==============================================================================

Et au fait, merci à Jean-Claude et à papydall d'avoir essayé (et même essuyé les plâtres).
Et tenez-moi au courant de la suite...

@papydall,
Il me semble avoir eu moi aussi à un moment l'apparition intempestive de la fenêtre de ResHacker, je ne sais plus où, mais il me semble également que j'avais résolu en écrivant
EXECUTE_WAIT "CMD.exe /C ResHacker.exe.... "
au lieu de
EXECUTE_WAIT "ResHacker.exe ..."
c'est assez bizarre, je n'ai pas encore très bien compris quand il faut faire comme ça ou pas... l'inconvénient du Cmd c'est qu'il fait apparaître une fenêtre noire momentanée...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall



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

MessageSujet: Re: Mon interface Panoramic   Jeu 16 Oct 2014 - 2:11

Après avoir apporté les rectifications suivantes (abstraction faite de l’adaptation des chemins), ça MARCHE !!!
Voici les modifs :
Ligne 9 : ajouter \
Code:
 ra$ = Pan$+"Manuel\": ' Répertoire de la documentation Panoramic (créé) <=======
Ligne 89 :  ajouter \
Code:
 rm$ = "C:\TEMP\": ' Répertoire de travail <===== A PRÉCISER (Jean-Claude ?) ====
Ligne 92
Code:
 EXECUTE_WAIT Rhk$+Rpm$: ' -> résultat dans fz$
A modifier
Code:
 EXECUTE_WAIT "CMD.exe /c "+Rhk$+Rpm$: ' -> résultat dans fz$



Remarque : le code en pur panoramic, ça marche aussi, mais le résultat est moins bon. Wink
En tout cas bravo!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



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

MessageSujet: Re: Mon interface Panoramic   Jeu 16 Oct 2014 - 15:25

Merci pour ces précisions pleines de bon sens papydall, au moins on voit que tu suis bien ! Very Happy
(pour les antislash à la fin des chemins j'ai changé mes habitudes, je les mets maintenant, ça distingue des noms de fichiers, mais c'est encore un peu touffu).

Je ne trouve pas que ce soit moins bon avec le pur panoramic... ? pour moi c'est pareil (le résultat).
Mais c'est vrai que c'est long...
Je vais optimiser et faire une sub plus générale, mais ce sera toujours plus long que ResHacker.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Mon interface Panoramic   Jeu 16 Oct 2014 - 18:53

Voilà où j'en suis de mes pérégrinations:
Finalement, deux subs d'extraction de données d'un fichier binaire (ou évidemment d'un fichier ascii, qui est un binaire particulier, mais dans ce cas on ne tient pas compte des sauts de lignes).

Ou plutôt 3 Subs:
1) Extraction de la doc des mots-clés de Panoramic_Editor (fichier texte brut), comme ci-dessus. J'ai gagné quelques secondes: 17 au lieu de 26  Neutral je crois qu'il est difficile de faire mieux avec les moyens employés.
Deux subs plus générales:
2) Extraction d'une zone donnée d'un fichier dans un fichier résultat, zone commençant à une position donnée et de longueur donnée.
3) Extraction dans un fichier, à partir d'une position donnée, d'une zone commençant par une séquence donnée et se terminant par une séquence donnée (par exemple "<html>" et "</html>")
On peut donc faire des extractions successives en faisant progresser le pointeur.

Avec l'exemple d'extraction de la doc de Panoramic_Editor, qu'on peut ensuite mettre en forme avec le programme plus haut (la sub remplace l'appel à ResHacker):
Code:
DIM Edp$, fr$
' Chemins à vérifier:
Edp$ = "C:\Program Files (x86)\Panoramic Editor\PANORAMIC_EDITOR.exe"
fr$ = "C:\TEMP\ppp.txt"
print time$
Extract_MC(Edp$,fr$)
print time$
END: ' =========================================================================
' ==============================================================================
SUB Extract_MC(Edp$,fr$)
' Extraction de la doc des mots-clés de Panoramic_Editor (chemin Edp$)
' Résultat brut dans le fichier texte fr$
' (Inconvénient: temps d'exécution, environ 17 secondes)
DIM_LOCAL sd$,sf$,a$,sz%,k%,k1%
sd$ = "300D0A23494E434C554445"
sf$ = "0D0A460D0A46"
CURSOR_HOURGLASS 0
FILEBIN_OPEN_READ 8,Edp$: FILEBIN_OPEN_WRITE 9,fr$: sz% = FILEBIN_SIZE(8)
p% = 0
FILEBIN_HEXA_READ 8,2000,a$: k% = INSTR(a$,sd$)
WHILE k% < 1
    p% = p%+2000-LEN(sd$): FILEBIN_POSITION 8,p%
    FILEBIN_HEXA_READ 8,2000,a$: k% = INSTR(a$,sd$)
END_WHILE
k1% = INSTR_POS(a$,sf$,k%)
IF k1% > 0
    a$ = MID$(a$,k%,k1%+LEN(sf$)-k%)
    FILEBIN_HEXA_WRITE 9,LEN(a$)/2,a$)
ELSE
    a$ = RIGHT_POS$(a$,k%): k% = 0
    WHILE k% < 1
        FILEBIN_HEXA_WRITE 9,LEN(a$)/2,a$
        p% = p%+2000-LEN(sf$)
        FILEBIN_HEXA_READ 8,2000,a$: k%=INSTR(a$,sf$)
    END_WHILE
    a$ = LEFT$(a$,k%-1)+sf$
    FILEBIN_HEXA_WRITE 9,LEN(a$)/2,a$
END_IF
FILEBIN_CLOSE 8: FILEBIN_CLOSE 9
CURSOR_DEFAULT 0
END_SUB
' ==============================================================================
SUB Bin_Extract(f$,p%,lg%,fr$)
' Extraction depuis f$ de lg% octets à partir de la position p%, résultat dans fr$
DIM_LOCAL a$,nb%,rs%,i%
nb% = INT(lg%/2000): rs% = lg%-nb%*2000
FILEBIN_OPEN_READ 8,f$: FILEBIN_OPEN_WRITE 9,fr$
FILEBIN_POSITION 8,p%
IF nb% > 0
    FOR i% = 1 TO nb%
        FILEBIN_HEXA_READ 8,2000,a$: FILEBIN_HEXA_WRITE 9,2000,a$
    NEXT i%
END_IF
IF rs%>0 THEN FILEBIN_HEXA_READ 8,rs%,a$: FILEBIN_HEXA_WRITE 9,rs%,a$
FILEBIN_CLOSE 8: FILEBIN_CLOSE 9
END_SUB
' ==============================================================================
SUB Seq_Extract(f$,p%,sd$,sf$,fr$)
' Extraction depuis f$, à partir de la position p%, d'une séquence commençant
' par sd$ et finissant par sf$.
' Résultat dans fr$ (séquences incluses)
' Au retour, dans le clipboard, 16 caractères:
'     8 caractères: position séquence de début trouvée
'     8 caractères: longueur de séquence, exemple: 0083865200001711
'     (=0000000000000000 si séquence début non trouvée)
DIM_LOCAL a$, sz%, k%, k1%, cr$
' conversion des séquences en hexadécimal:
cr$ = ""
FOR k% = 1 TO LEN(sd$): cr$=cr$+RIGHT$("0"+HEX$(ASC(MID$(sd$,k%,1))),2): NEXT k%
sd$ = cr$: cr$ = ""
cr$ = ""
FOR k% = 1 TO LEN(sf$): cr$=cr$+RIGHT$("0"+HEX$(ASC(MID$(sf$,k%,1))),2): NEXT k%
sf$ = cr$
CURSOR_HOURGLASS 0
FILEBIN_OPEN_READ 8,f$: FILEBIN_OPEN_WRITE 9,fr$: sz% = FILEBIN_SIZE(8)
FILEBIN_POSITION 8,p%
FILEBIN_HEXA_READ 8,2000,a$: k% = INSTR(a$,sd$)
WHILE k% < 1
    IF FILEBIN_POS(8) >= sz%
        CLIPBOARD_STRING_COPY STRING$(16,"0"): ' séquence début non trouvée
        FILEBIN_CLOSE 8: FILEBIN_CLOSE 9: CURSOR_DEFAULT 0: EXIT_SUB
    END_IF
    p% = p%+2000-LEN(sd$): FILEBIN_POSITION 8,p%
    FILEBIN_HEXA_READ 8,2000,a$: k% = INSTR(a$,sd$)
END_WHILE
cr$ = RIGHT$("0000000"+STR$(p%+(k%-1)/2),8): ' position de début
k1% = INSTR_POS(a$,sf$,k%)
IF k1% > 0
    a$ = MID$(a$,k%,k1%+LEN(sf$)-k%)
    FILEBIN_HEXA_WRITE 9,LEN(a$)/2,a$)
ELSE
    a$ = RIGHT_POS$(a$,k%): k% = 0
    WHILE k% < 1
        FILEBIN_HEXA_WRITE 9,LEN(a$)/2,a$
        p% = p%+2000-LEN(sf$)
        FILEBIN_HEXA_READ 8,2000,a$: k%=INSTR(a$,sf$)
    END_WHILE
    a$ = LEFT$(a$,k%-1)+sf$
    FILEBIN_HEXA_WRITE 9,LEN(a$)/2,a$
END_IF
cr$ = cr$ + RIGHT$("0000000"+STR$(FILEBIN_SIZE(9)),8)
FILEBIN_CLOSE 8: FILEBIN_CLOSE 9
CLIPBOARD_STRING_COPY cr$: ' emplacement et taille
CURSOR_DEFAULT 0
END_SUB
' ==============================================================================
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude



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

MessageSujet: Re: Mon interface Panoramic   Ven 17 Oct 2014 - 14:21

Je vais faire l'essai, mais pas avant lundi car mon WE est chargé. Very Happy drunken Very Happy

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur En ligne
Jicehel



Nombre de messages : 5782
Age : 44
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Mon interface Panoramic   Ven 17 Oct 2014 - 14:45

Je testerais ce week end certainement (surement dimanche).
En tout cas bravo, quand on peut éviter d'utiliser des ressources externes c'est toujours plus simple.
Surtout que là, c'est directement personnalisable et pas tellement plus long qu'avec ResHacker à priori tout confondu. Je ne sais pas si compilé, ça pourrait aller encore plus vite ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur En ligne
JL35



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

MessageSujet: Re: Mon interface Panoramic   Ven 17 Oct 2014 - 15:38

Dis-donc Jean-Claude, le we ne commence pas le vendredi matin, même pour un retraité ! Very Happy

@Jicehel,
C'est un choix, mais c'est vrai qu'à part d'être spécialement pressé, l'option tout Panoramic se défend, d'autant plus que cette opération (extraction de la doc) ne se fait qu'à chaque changement de version d'éditeur, donc pas très souvent.

Je vais compiler un module, juste pour voir, mais je suis sceptique sur un gain de temps significatif.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Mon interface Panoramic   Ven 17 Oct 2014 - 17:24

Eh bien, conformément à ce que j'attendais, la compilation ne change rien au temps d'exécution, ce qui est normal puisque c'est toujours interprété en exécutable, comme dans l'éditeur (je n'ai pas essayé avec le compilateur).

Voici la dernière version: cette fois-ci la sub est indépendante et fait tout le travail: extraction du module doc depuis l'Éditeur, puis création des deux fichiers: liste des mots-clés, et doc générale avec une rubrique par mot-clé.

Avec un petit module d'appel (création uniquement s'il y a eu changement d'éditeur) et d'utilisation des listes crées.
(en cas de création ou mise à jour, il serait peut-être bon de prévoir quelque chose pour faire patienter pendant les quelque 17 ou 18 secondes de travail, genre progress_bar, ou autre sablier).
Code:
' ********** Création et consultation des fichiers d'aide par mot-clé **********
LABEL Afm, afm1, Perso
DIM Edp$,Pan$,ra$, fl$, fa$, fp$, i%, a$, b$,q$,fct$(10)
' ============================ CHEMINS À PRÉCISER ==============================
Edp$ = "C:\Program Files (x86)\Panoramic Editor\PANORAMIC_EDITOR.exe": ' Éditeur
Pan$ = "C:\PANORAMIC\": ' Répertoire des sources Panoramic <********************
' ==============================================================================
ra$ = Pan$+"Manuel\": ' Répertoire de la documentation Panoramic (créé) <=======
fl$ = ra$+"ListeMC.txt": ' liste brute des mots-clés (créé)
fa$ = ra$+"Aide.txt": ' doc des mots-clés (créé)
DATA "","","DÉFINITION","FONCTION","SYNTAXE","USAGE","CAS D'ERREUR"
DATA "EXEMPLES","EN RAPPORT"
FOR i% = 1 TO 9: READ fct$(i%): NEXT i%
q$ = CHR$(34)

WIDTH 0,800: HEIGHT 0,SCREEN_Y-50: BORDER_SMALL 0
LIST 1: WIDTH 1,200: HEIGHT 1,HEIGHT(0)-35: FONT_NAME 1,"Consolas"
COLOR 1,200,255,200: ON_CLICK 1,Afm: font_size 1,10
MEMO 2: LEFT 2,WIDTH(1): WIDTH 2,WIDTH(0)-WIDTH(1)-16: HEIGHT 2,HEIGHT(1)
COLOR 2,255,255,200: FONT_NAME 2,"Consolas": FONT_SIZE 2,10
BAR_VERTICAL 2
MEMO 3: HIDE 3
BUTTON 4: TOP 4,HEIGHT(0)-60: LEFT 4,WIDTH(0)-120: CAPTION 4,"Ajouter"
ON_CLICK 4,Perso
IF DIR_EXISTS(ra$) = 0 THEN DIR_MAKE ra$
EXECUTE_WAIT "CMD.exe /C DIR "+q$+Edp$+q$+" /TC | clip"
a$ = CLIPBOARD_STRING_PASTE$: i% = INSTR(a$,"/")
i% = VAL(MID$(a$,i%+4,4)+MID$(a$,i%+1,2)+MID$(a$,i%-2,2)): ' date Editeur actuel
b$ = "0"
IF FILE_EXISTS(fa$) = 1
    FILE_OPEN_READ 1,fa$: FILE_READLN 1,b$: FILE_CLOSE 1
    b$ = LEFT$(b$,8): ' date de la dernière mise à jour (forme: aaaammjj)
END_IF
IF VAL(b$) < i%
    MotsClesPano(Edp$,fl$,fa$): ' Création initiale, ou mise à jour de la doc
END_IF
FILE_LOAD 3,fl$
FOR i% = 1 TO COUNT(3): ITEM_ADD 1,ITEM_READ$(3,i%): NEXT i%
SORT 1
a$ = "#INCLUDE "+q$+"F"+q$: GOSUB afm1
END
' ==============================================================================
Afm:
a$ = ITEM_INDEX$(1)
afm1:
FILE_OPEN_READ 1,fa$
FILE_READLN 1,b$: WHILE MID$(b$,4,50)<>a$: FILE_READLN 1,b$: END_WHILE
CLEAR 2
ITEM_ADD 2,STRING$(20," ")+MID$(b$,4,50)
FILE_READLN 1,b$
WHILE LEFT$(b$,3)<>"1_ " AND FILE_EOF(1)=0
    IF MID$(b$,2,2) = "_ "
        i% = VAL(LEFT$(b$,1)): ITEM_ADD 2,""
        IF i%>2 THEN ITEM_ADD 2,"==================== "+fct$(i%)+" ===================="
        b$ = MID$(b$,4,200)
    END_IF
    ITEM_ADD 2,b$
    FILE_READLN 1,b$
END_WHILE
FILE_CLOSE 1
fp$ = ra$+a$+".txu"
IF FILE_EXISTS(fp$) = 1: ' fichier de commentaire perso pour ce mot-clé
    ITEM_ADD 2,""
    ITEM_ADD 2,"*=*=*=*=*=*=*=*=*=*=*=* PERSO *=*=*=*=*=*=*=*=*=*=*=*"
    FILE_OPEN_READ 1,fp$
        WHILE FILE_EOF(1) = 0
            FILE_READLN 1,b$: ITEM_ADD 2,b$
        END_WHILE
    FILE_CLOSE 1
END_IF
RETURN
' ==============================================================================
Perso:
' commentaires perso
a$="Notepad.exe "+q$+fp$+q$
EXECUTE_WAIT "CMD.exe /C "+a$
RETURN
' ==============================================================================
SUB MotsClesPano(Edp$,fl$,fa$)
' Extraction depuis Edp$ (Panoramic_Editor.exe) de la documentation des mots-clés
' Panoramic.
' Résultats dans:
'      - fl$: liste brute des mots-clés
'      - fa$: documentation complète, par mot-clé
DIM_LOCAL rm$,sd$,sf$,p%,fz$,a$,sz%,k%,k1%,nmc%,dl%
rm$ = FILE_EXTRACT_PATH$(fl$): ' répertoire de travail provisoire
fz$ = rm$+"ppp.txt": ' fichier provisoire de travail (créé puis supprimé)
sd$ = "300D0A23494E434C554445": ' séquence début de recherche = 0<=#INCLUDE
sf$ = "0D0A460D0A46": ' séquence fin de recherche = <=F<=F
p% = 0: ' recherche à partir du début de l'Éditeur
FILEBIN_OPEN_READ 8,Edp$: FILEBIN_OPEN_WRITE 9,fz$: sz% = FILEBIN_SIZE(8)
FILEBIN_POSITION 8,p%
FILEBIN_HEXA_READ 8,2000,a$: k% = INSTR(a$,sd$)
WHILE k% < 1
    IF FILEBIN_POS(8) >= sz%
        CLIPBOARD_STRING_COPY STRING$(16,"0"): ' séquence début non trouvée
        FILEBIN_CLOSE 8: FILEBIN_CLOSE 9: EXIT_SUB
    END_IF
    p% = p%+2000-LEN(sd$): FILEBIN_POSITION 8,p%
    FILEBIN_HEXA_READ 8,2000,a$: k% = INSTR(a$,sd$)
END_WHILE
k1% = INSTR_POS(a$,sf$,k%)
IF k1% > 0
    a$ = MID$(a$,k%,k1%+LEN(sf$)-k%)
    FILEBIN_HEXA_WRITE 9,LEN(a$)/2,a$)
ELSE
    a$ = RIGHT_POS$(a$,k%): k% = 0
    WHILE k% < 1
        FILEBIN_HEXA_WRITE 9,LEN(a$)/2,a$
        p% = p%+2000-LEN(sf$)
        FILEBIN_HEXA_READ 8,2000,a$: k%=INSTR(a$,sf$)
    END_WHILE
    a$ = LEFT$(a$,k%-1)+sf$
    FILEBIN_HEXA_WRITE 9,LEN(a$)/2,a$
END_IF
FILEBIN_CLOSE 8: FILEBIN_CLOSE 9
print time$+" fin extr"
FILE_OPEN_READ 8, fz$: FILE_OPEN_WRITE 9,fa$: FILE_OPEN_WRITE 6,fl$
EXECUTE_WAIT "CMD.exe /C DIR "+CHR$(34)+Edp$+CHR$(34)+" /TC | clip"
a$ = CLIPBOARD_STRING_PASTE$: k% = INSTR(a$,"/")
a$ = MID$(a$,k%+4,4)+MID$(a$,k%+1,2)+MID$(a$,k%-2,2)
FILE_WRITELN 9,a$+" * date de Panoramic_Editor": ' archivage de la date Éditeur
FILE_READLN 8,a$: nmc% = 0
WHILE FILE_EOF(8) = 0
    FILE_READLN 8,a$
    IF LEN(a$) = 1 AND NUMERIC(a$) = 1
        WHILE a$<>"1": FILE_READLN 8,a$: END_WHILE: FILE_WRITELN 9,"": ' saut de ligne
        FILE_READLN 8,a$: FILE_WRITELN 9,"1_ "+a$: nmc%=nmc%+1: ' MOT-CLÉ COMPLET
        IF LEFT$(a$,1) = "("
            IF INSTR(a$,"STEP") > 0
                a$ = "STEP"
            ELSE
                a$ = "TO"
            END_IF
        END_IF
        FILE_WRITELN 6,a$
        WHILE a$<>"2": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"2_ "+a$: ' RÉSUMÉ
        WHILE a$<>"3": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"3_ "+a$: ' DÉFINITION
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"4": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"4_ "+a$: ' FONCTION
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"5": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"5_ "+a$: ' SYNTAXE
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"6": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"6_ "+a$: ' USAGE
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"7": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"7_ "+a$: ' CAS D'ERREUR
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"8": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"8_ "+a$: ' EXEMPLES
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
        WHILE a$<>"9": FILE_READLN 8,a$: END_WHILE
        FILE_READLN 8,a$: FILE_WRITELN 9,"9_ "+a$: ' EN RAPPORT
        FILE_READLN 8,a$: WHILE LEN(a$)>1: FILE_WRITELN 9,a$: FILE_READLN 8,a$: END_WHILE
    END_IF
END_WHILE
FILE_CLOSE 8: FILE_CLOSE 9: FILE_CLOSE 6
FILE_DELETE fz$
dl%=1000: WHILE OBJECT_EXISTS(dl%)=1: dl%=dl%+1: END_WHILE
DLIST dl%: FILE_LOAD dl%,fl$: SORT dl%: FILE_SAVE dl%,fl$: DELETE dl%
END_SUB
' ==============================================================================
ps J'ai essayé avec le compilateur, mais ça ne marche pas, il y a des commandes non reconnues, par exemple filebin_hexa_read...

Edit 23h15 manquait des '\' à la fin des chemins lignes 6 et 8


Dernière édition par JL35 le Sam 18 Oct 2014 - 0:15, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude



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

MessageSujet: Re: Mon interface Panoramic   Ven 17 Oct 2014 - 18:10

Finalement j'ai un peu de temps avant l'arrivée de mes hôtes.

Hé Bien, ça marche pas.

Voici ce qui se passe.



J'ai également fait l'essai sans les anti-slash, c'est idem ???

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur En ligne
JL35



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

MessageSujet: Re: Mon interface Panoramic   Ven 17 Oct 2014 - 18:55

Manifestement, tu n'as pas la bonne valeur dans a$... (c'est à dire le clipboard_string_paste$), donc probablement le clipboard n'a pas été garni.
Tu dois être sous xp (c'est vieux ça) si je ne m'abuse, et tu ne disposes peut-être pas de la fonction clip (qui n'est pas en standard sous xp) et le déroutage de l'execute_wait qui donne la date du fichier vers le clipboard ne doit pas se faire.

Dans ce cas, deux solutions:
- tu te procures le clip.exe qui résoudra le problème (facile à trouver, on en a déjà parlé, mais je ne sais plus trop où)
- ou bien, au lieu du '| clip' tu rediriges vers un fichier: '> fichpro.tmp' et ensuite tu lis le fichier pour avoir le résultat, c'est un peu plus lourd.

PS
clip.exe à télécharger ici par exemple: http://www.generation-nt.com/fichiers/biblio/17_clip.zip
Dézipper, et copier clip.exe dans C:\%windir%\system32 (ou plus simplement C:\Windows\System32)

Citation :

Finalement j'ai un peu de temps avant l'arrivée de mes hôtes.
Ce n'est pas toi l'hôte ? en principe on attend plutôt l'arrivée de ses invités... Very Happy


Dernière édition par JL35 le Ven 17 Oct 2014 - 19:10, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
RMont



Nombre de messages : 155
Age : 74
Localisation : charente maritime
Date d'inscription : 29/12/2008

MessageSujet: Re: Mon interface Panoramic   Ven 17 Oct 2014 - 19:10


bonjour a tous.
je voudrai bien participer aussi aux essais de ce code, mais je suis confronté a cette erreur en l
ligne 31.
je suis sous vista  sp1 je crois.
je pense que mes chemins sont bons  et je ne sais quoi faire pour sortir de ce problème.
- question :comment  est ce que je peux vérifier que mes chemins soient bons ?.
et qu'est-ce  qui cloche dans cette ligne 31

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
RMont



Nombre de messages : 155
Age : 74
Localisation : charente maritime
Date d'inscription : 29/12/2008

MessageSujet: Re: Mon interface Panoramic   Ven 17 Oct 2014 - 19:14


je constate que c'est la même ligne que jean-claude
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Mon interface Panoramic   Ven 17 Oct 2014 - 19:16

bonjour RMont,
j'ai bien l'impression que tu as le même problème que Jean-Claude, vois ma réponse ci-dessus.
En effet, c'est sûr que clip.exe n'est pas en standard sous Vista, alors il faudra appliquer l'une des deux solutions que je donne, mais je préconise plutôt la deuxième, intégrer clip.exe, c'est bien plus souple que de dérouter le résultat dans un fichier.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Mon interface Panoramic   Ven 17 Oct 2014 - 19:16

On s'est croisés... même punition, même motif !

Je vais être absent dans la soirée, donc pas de réponses avant plus tard ce soir...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude



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

MessageSujet: Re: Mon interface Panoramic   Ven 17 Oct 2014 - 19:20

J'ai bien clip.exe dans mon PC (qui est sous Windows 8 ), il se trouve dans le répertoire C:\Windows\System32.

Alors, on fait quoi  Question

Bon ben, il faut que j'y aille, ils arrivent ! Very Happy

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur En ligne
JL35



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

MessageSujet: Re: Mon interface Panoramic   Ven 17 Oct 2014 - 19:26

Alors là j'y comprends plus rien, si tu as clip.
essaie de mettre un MESSAGE a$ juste après le a$ = Clipboard_String_Paste$, pour voir ce qu'il y a dedans...

En fait, le but est de récupérer la date du fichier Panoramic_Editor.exe, pour voir s'il est différent de la dernière date archivée, et dans ce cas de refaire l'opération d'extraction.
Pour ça on fait appel à la fonction DIR de ms-dos, qui va donner la date de création (paramètre /TC), le problème est de récupérer le résultat du DIR, en principe ça marche tout seul...

Normalement, le résultat est rendu sous la forme:

et on récupère la date à gauche.
Pour ça je cherche le 1er '/' (entre jour et mois) et je me base là-dessus, en principe il n'y en a pas d'autre avant.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Mon interface Panoramic   

Revenir en haut Aller en bas
 
Mon interface Panoramic
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 2 sur 4Aller à la page : Précédent  1, 2, 3, 4  Suivant
 Sujets similaires
-
» Nouvelle interface Digitrax PR3
» Interface LI 100 F LENZ
» EDI réalisé entièrement en Panoramic
» EDI réalisé entièrement en Panoramic
» Utilisateurs 6021 + interface 6050

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