ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Un exe compilé avec VFP : mais quelle version ?   



L'auteur

Francis Faure
France France
Membre Actif (personne physique)
# 0000000001
enregistré le 11/10/2004

http://www.wanagain.net
56 ans
Faure Francis
de la société Design Or Decline
Fiche personnelle


Note des membres
20/20
1 vote


Contributions > 21 - Outils

Un exe compilé avec VFP : mais quelle version ?
# 0000000649
ajouté le 20/10/2008 15:43:30 et modifié le 20/10/2008
consulté 8169 fois
Niveau débutant

Version(s) Foxpro :
VFP 9.0
VFP 8.0
VFP 7.0
VFP 6.0

Description

Bonjour,

 

Au cours du temps, si vous avez, comme moi, sur vos disques des EXEcutable VFP (ou.DLL) compilés avec différentes version de VFP...  et que vous vous voulez retrouver la bonne version...

 

Alors cette petite fonction peut vous être utile...

 

Cordialement

Francis FAURE

 

Testé avec VFP6, VFP7, VFP8, VFP9.

(Merci de vos retours si vous avez encore un VFP5 ou même un VFP3 pour tester)

 

PS : Merci a Robert pour son indication d'optimisation en limitant le scan a 0x3000 octets

 

Code source :
? VersionVFP()

function VersionVFP
parameters lsFileExe  && fichier EXE, DLL a analyser
local lsRetour
local liF
local liPos
  lsRetour = "Ce n'est pas un Exécutable Visual FoxPro ?"
  if Vartype(lsFileExe)<>"C"
    lsFileExe = GetFile("exe""Indiquez le Fichier Exe VFP à Analyser")
  endif
  if Empty(m.lsFileExe)
    lsRetour =""
  else
    if not File(m.lsFileExe)
      lsRetour=""
      =MessageBox(m.lsFileExe+ " : Fichier Inexistant", 16, "VFP Version")
    else
      liF = Fopen(m.lsFileExe, 0)
      lsExe = Space(19)
      liPos = 0
      do while not Feof(m.liF)
        m.lsEXE = Substr(m.lsEXE, 2) + Fread(m.liF,1)
        liPos = liPos + 1
        if m.lsEXE=="VisualFoxProRuntime"
          m.lsEXE = m.lsEXE + Fread(m.liF, 2)
          * cas des DLL
          if m.lsEXE=="VisualFoxProRuntimeMT"
            m.lsEXE = m.lsEXE + Fread(m.liF, 2)
          endif
          m.lsRetour = m.lsEXE
          exit
        endif
        if liPos> 0x3000 && optimisation by Robert Plagnard
          exit
        endif
      enddo
      =Fclose(m.liF)
   endif
 endif
return m.lsRetour


Commentaires
Aucun commentaire enregistré ...

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3