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 ?" ifVartype(lsFileExe)<>"C"
lsFileExe = GetFile("exe", "Indiquez le Fichier Exe VFP à Analyser") endif ifEmpty(m.lsFileExe)
lsRetour ="" else ifnotFile(m.lsFileExe)
lsRetour=""
=MessageBox(m.lsFileExe+ " : Fichier Inexistant", 16, "VFP Version") else
liF = Fopen(m.lsFileExe, 0)
lsExe = Space(19)
liPos = 0 dowhilenotFeof(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