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
» mise a jour calculatrice
par joeeee2017 Aujourd'hui à 22:44

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Aujourd'hui à 16:52

» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 14:16

» Compilateur FBPano
par Ouf_ca_passe Aujourd'hui à 12:25

» double guillemets "" dans un EDIT
par Marc Hier à 23:43

» Documentation de KGF
par Klaus Lun 20 Nov 2017 - 22:52

» Zoom sur une portion d'écran
par JL35 Lun 20 Nov 2017 - 21:51

» Recherche d'une expression dans un source
par Marc Lun 20 Nov 2017 - 13:08

» Tracer une grille n'importe où sur l'écran
par JL35 Dim 19 Nov 2017 - 22:14

» TourD Version 2
par Klaus Sam 18 Nov 2017 - 23:58

» La métamatière et le peuple
par JL35 Ven 17 Nov 2017 - 21:18

» Capture d'une zone de l'écran total
par JL35 Ven 17 Nov 2017 - 18:41

» qui peut résoudre mon prb
par pascal10000 Jeu 16 Nov 2017 - 17:30

» évènements et objets système : listage automatique
par Jean Claude Jeu 16 Nov 2017 - 11:15

» Panoramic et la reconnaissance vocale.
par papydall Jeu 16 Nov 2017 - 3:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

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

Partagez | 
 

 Mise à jour des modules Klaus

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



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

MessageSujet: Mise à jour des modules Klaus   Ven 17 Mai 2013 - 11:47

Pardon Klaus si j'interviens ici, mais ayant eu quelques difficultés avec la fonction 'officielle' de mise à jour (en fait ça ne veut pas marcher chez moi), j'ai adopté une approche un peu différente, que voici:
Code:
' Mise à jour de KGF.dll et autres modules
LABEL Fin, GUI, Clic2, Clic, Dlf, Valide, Version, Datpdf, Datfich
DIM url$, urll$(20), fi$(20), Nbfich, a$, b$, p$, nurl%, i%, j%, k%, t%, f$, tl$
DIM ver$, fv$, nf%, n%, res%, dat$, al1, al2, al3, bt1, bt2, e1, e2, e3
p$ = "C:\PANORAMIC\KLAUS\DLLs\": ' répertoire d'utilisation des modules
tl$ = "C:\TELECHAR\": ' répertoire des téléchargements
DATA "http://klaus.panoramic.voila.net/versions/KGF.dll"
DATA "http://klaus.panoramic.voila.net/versions/KGF.pdf"
DATA "http://klaus.panoramic.voila.net/versions/KGF.chm"
DATA "http://klaus.panoramic.voila.net/versions/KGF.doc"
DATA "http://klaus.panoramic.voila.net/versions/BDR.dll"
DATA "http://klaus.panoramic.voila.net/versions/KGF_SUB.bas"
DATA "http://klaus.panoramic.voila.net/versions/BDR_SUB.chm"
DATA "http://klaus.panoramic.voila.net/versions/BDR_SUB.doc"
DATA "http://klaus.panoramic.voila.net/versions/BDR_SUB.pdf"
DATA "F"
nurl% = 0: READ a$
WHILE a$ <> "F"
    nurl% = nurl%+1: urll$(nurl%) = a$
    FOR k% = LEN(a$) TO 1 STEP -1
        IF MID$(a$, k%, 1) = "/" THEN EXIT_FOR
    NEXT k%
    fi$(nurl%) = MID$(a$, k%+1, 20): ' fichier à charger
    READ a$
END_WHILE

DLL_ON p$+"KGF.dll"
GOSUB GUI
END
' ==============================================================================
Fin:
TERMINATE
' ==============================================================================
GUI:
HEIGHT 0, nurl%*25+120: WIDTH 0,340: CAPTION 0,"KGF UPDATE": BORDER_SMALL 0
FONT_NAME 0,"Arial": COLOR 0,190,255,255
al1 = 201
ALPHA al1: LEFT al1,15: TOP al1,6: FONT_COLOR al1,0,0,255: FONT_BOLD al1
CAPTION al1,"Choisir les fichiers à mettre à jour:"
al2 = 202
ALPHA al2: LEFT al2,120: TOP al2,25: FONT_COLOR al2,0,0,255
CAPTION al2, "Version actuelle:      Version téléchargée:"

t% = 15
FOR i% = 1 TO nurl%
    t% = t%+25: CHECK i%: TOP i%,t%: LEFT i%,10: WIDTH i%,280
    ON_CLICK i%, Clic2: CURSOR_POINT i%
    e1 = i%*10+1: EDIT e1: TOP e1,TOP(i%): LEFT e1,LEFT(i%)+20: WIDTH e1,80: ' Nom
    e2 = e1+1: EDIT e2: TOP e2,TOP(i%): LEFT e2,LEFT(e1)+WIDTH(e1)+5: WIDTH e2,100: ' Version act
    e3 = e2+1: EDIT e3: TOP e3,TOP(i%): LEFT e3,LEFT(e2)+WIDTH(e2)+5: WIDTH e3,100: ' Version nouv
    f$ = fi$(i%): fv$ = p$ + f$
    TEXT e1, f$
    IF f$ = "KGF.dll" OR f$ = "BDR.dll"
        GOSUB Version
        TEXT e2, MID$(ver$, 9, 20)
    ELSE
        IF RIGHT$(f$, 4) = ".pdf"
            GOSUB Datpdf
        ELSE
            GOSUB Datfich
        END_IF
        TEXT e2, dat$
    END_IF
NEXT i%
bt1 = 204
BUTTON bt1: TOP bt1,HEIGHT(0)-60: LEFT bt1,220: CAPTION bt1,"OK"
ON_CLICK bt1, Clic
al3 = 203
ALPHA al3: TOP al3,HEIGHT(0)-80: LEFT al3,10
bt2 = 205
BUTTON bt2: TOP bt2,TOP(bt1): LEFT bt2,100: CAPTION bt2,"Valider": HIDE bt2
ON_CLICK bt2, Valide
RETURN
' ==============================================================================
Clic2:
' Click sur un check
FOR i% = 1 TO nurl%
    IF CLICKED(i%) = 1
        IF CHECKED(i%) = 1
            Nbfich = Nbfich + 1
        ELSE
            Nbfich = Nbfich - 1
        END_IF
    END_IF
NEXT i%
RETURN
' ==============================================================================
Clic:
CAPTION al3, "Chargement des fichiers..."
nf% = 0
FOR n% = 1 TO nurl%
    IF CHECKED(n%) = 1
        nf% = nf% + 1
        url$ = urll$(n%): f$ = fi$(n%): ' fichier à charger
        GOSUB Dlf: ' téléchargement du fichier
        fv$ = a$: ' chemin du fichier téléchargé
        e3 = n%*10 + 3
        IF f$ = "KGF.dll" OR f$ = "BDR.dll"
            GOSUB Version : ' version du nouveau fichier téléchargé
            b$ = MID$(ver$, 9, 20)
            TEXT e3, b$
            ' CAPTION n%, CAPTION$(n%)+"  ->  "+b$
        ELSE
            IF RIGHT$(f$, 4) = ".pdf"
                GOSUB Datpdf
            ELSE
                GOSUB Datfich
            END_IF
            TEXT e3, dat$
        END_IF
    END_IF
NEXT n%
IF nf% = 0 THEN CAPTION al3, "": RETURN: ' pas de fichier coché
CAPTION bt1,"Quitter": ON_CLICK bt1, Fin
CAPTION al3,"Terminé, valider ? (décocher les modules à ne pas actualiser)"
SHOW bt2
RETURN
' ==============================================================================
Dlf:
' Connexion à l'url donnée et téléchargement du fichier f$
a$ = tl$ + f$
IF FILE_EXISTS(a$) = 1 THEN FILE_DELETE a$
EXECUTE_WAIT url$
WHILE FILE_EXISTS(a$) = 0: WAIT 1000: END_WHILE
' ici, fichier téléchargé dans le répertoire tl$
RETURN
' ==============================================================================
Valide:
' Recopie des fichiers  téléchargés dans leur répertoire d'utilisation
FOR i% = 1 TO nurl%
    IF CHECKED(i%) = 1
        a$ = fi$(i%): ' fichier
        IF FILE_EXISTS(tl$+a$) = 1: ' fichier téléchargé
            ' IF FILE_EXISTS(p$+a$) = 1 THEN FILE_DELETE p$+a$
            ' FILE_COPY tl$+a$,p$+a$
            EXECUTE_WAIT "CMD.exe /C COPY " + tl$+a$ + " " + p$+a$ + " /Y"
            FILE_DELETE tl$+a$
        END_IF
    END_IF
NEXT i%
RETURN
' ==============================================================================
Version:
' rechercher la version de KGF.dll ou BDR.dll, fv$ = chemin complet
f$ = FILE_EXTRACT_NAME$(fv$)
FILEBIN_OPEN_READ 9, fv$: a$ = STRING$(FILEBIN_SIZE(9)," "): FILEBIN_CLOSE 9
res% = DLL_CALL2("ReadBinaryFileToString",ADR(fv$),ADR(a$))
b$ = CHR$(25)+CHR$(0)+CHR$(0)+CHR$(0)+f$+" V": ' séquence cherchée (empirique)
k% = INSTR(a$, b$): ver$ = f$
IF k% > 0 THEN ver$ = MID$(a$, k%+4, 25)
RETURN
' ==============================================================================
Datpdf:
' Date de création d'un fichier pdf
dat$ = "(non trouvé)"
IF FILE_EXISTS(fv$) = 1
    FILEBIN_OPEN_READ 9, fv$: a$ = STRING$(FILEBIN_SIZE(9)," "): FILEBIN_CLOSE 9
    res% = DLL_CALL2("ReadBinaryFileToString",ADR(fv$),ADR(a$))
    b$ = "/CreationDate <": ' séquence cherchée
    k% = INSTR(a$, b$)
    dat$ = "": b$ = ""
    IF k% > 0
        a$ = MID$(a$, k%+19,24): ' Creation Date
        FOR k% = 2 TO LEN(a$) STEP 2
            b$ = b$ + STR$(VAL(MID$(a$, k%, 1)))
        NEXT k%
        dat$ = MID$(b$,7,2)+"/"+MID$(b$,5,2)+"/"+LEFT$(b$,4)+" "
        dat$ = dat$ + MID$(b$,9,2)+":"+MID$(b$,11,2)
    END_IF
END_iF
RETURN
' ==============================================================================
Datfich:
' Date de création d'un fichier quelconque
' -> date d'écriture sur le disque, après téléchargement... sans intérêt
dat$ = "(non trouvé)"
IF FILE_EXISTS(fv$) = 1
    dat$ = STRING$(255," ")
    res% = DLL_CALL2("GetFileDate",ADR(fv$),ADR(dat$))
    dat$ = LEFT$(dat$,16): ' sans les secondes
END_IF
RETURN
' ==============================================================================
SUB Exprog(prog$)
    ' Exécution d'un programme externe sans la fenêtre noire Ms-DOS
    ' - exemple: Exprog("Cmd.exe /c DIR C:\UTIL >C:\TEMP\Dir.txt")
    DIM_LOCAL scr$, bat$, qu$
    scr$ = "C:\TEMP\Vbscript.vbs"
    bat$ = "C:\TEMP\Bat.bat"
    qu$ = CHR$(34)
    ' ===== Création du fichier .bat
    FILE_OPEN_WRITE 9, bat$: FILE_WRITELN 9, prog$: FILE_CLOSE 9
    ' ===== Création du script .vbs
    FILE_OPEN_WRITE 9, scr$
    FILE_WRITELN 9, "CreateObject("+qu$+"Wscript.Shell"+qu$+").Run "+qu$+bat$+qu$+",0,True"
    FILE_CLOSE 9
    ' ===== Exécution du script
    EXECUTE_WAIT "WSCRIPT.exe "+scr$
    FILE_DELETE bat$: FILE_DELETE scr$
END_SUB
' ==============================================================================

Remarques:
- Il faut adapter les variables p$ et tl$.
- je n'utilise donc pas la fonction DownloadFile, mais une connexion directe sur le téléchargement du fichier.
- les téléchargements se font dans le répertoire implicite de téléchargements du navigateur.
- il s'affiche la date ou la version actuelle (en service) des fichiers, puis, après téléchargement, la date ou la version des fichiers téléchargés, le transfert dans le répertoire d'utilisation ne se faisant qu'à l'appui sur un bouton (avec suppression dans le répertoire de téléchargement).

Les date/version de KGF.dll et BDR.dll sont lues dans le fichier lui-même, ainsi que les dates de création des fichiers pdf,
Il faut noter que la date fichier donnée par la fonction GetFileDate est la date d'écriture sur le disque au moment du chargement, et non la date de création, donc sans intérêt pour comparer les versions.

PS Je ne me lasse pas de la fonction ReadFileToString qui est irremplaçable par sa facilité pour analyser un fichier binaire, les fonction natives Panoramic étant bien trop limitées pour un fichier un peu long.


Dernière édition par JL35 le Ven 17 Mai 2013 - 14:31, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Mise à jour des modules Klaus   Ven 17 Mai 2013 - 13:53

Belle réalisation !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 17 Mai 2013 - 13:56

Beau Travail !

Attention, ne fonctionne pas avec chrome en navigateur par défaut.
Chrome demande une autorisation pour charger les dlls,
ce qui bloque le programme.

Edit : Une idée comme çà... Laughing Peut être est ce mozilla qui bloque le chargement avec l'autre méthode... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur En ligne
JL35



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

MessageSujet: Re: Mise à jour des modules Klaus   Ven 17 Mai 2013 - 14:25

Je viens de corriger une omission dans le s/p Clic: prise en compte de la date de création des pdf téléchargés...

@ygeronimi
bizarre que chrome bloque les dll et pas les autres... ce n'est pas un paramètre à changer ?
En tout cas pour moi je ne sais pas ce qui bloque la fonction, le code erreur n'est pas très explicite !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7997
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 17 Mai 2013 - 14:32

Chrome me demande une autorisation pour toutes les extensions système.
*.exe , *.dll , ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur En ligne
JL35



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

MessageSujet: Re: Mise à jour des modules Klaus   Ven 17 Mai 2013 - 15:00

Je sais que ça existe pour les exe, et c'est aussi logique pour les dll, pareil pour les ouvrir en pièces jointes dans les emails, mais firefox ne me demande rien...
Peut-être que je les ai autorisés définitivement quelque part...

Je précise au passage (toujours dans mon système ci-dessus) qu'en ce qui concerne le téléchargement des pdf, c'est la 1ère page qui est présentée, il faut cliquer sur l'icône en haut à droite pour se voir proposer le téléchargement:
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Mise à jour des modules Klaus   

Revenir en haut Aller en bas
 
Mise à jour des modules Klaus
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mise à jour des modules Klaus
» mise à jour à vie sur zumo 550
» Reinitialisation d'un G278 après une mise à jour ratée
» Mise à jour nüvi 765t
» Mise à jour base 276C

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: