Search  
Saturday, February 11, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Clase - VCX si PRG  Cum pot obtine ...
 Cum pot obtine o lista a fisierelor incluse in exe (din acelasi exe)
 
 11/22/2009 11:00:06 PM
User is offlineedyshor
1450 posts
1st




Cum pot obtine o lista a fisierelor incluse in exe (din acelasi exe)
 (N/A) Modified By edyshor  on 11/22/2009 11:03:57 PM)
Pentru butoane folosesc png-uri, iar ca png-urile sa fise afisate cu transparenta, projecthook-ul construieste un prg "_png_loader" in beforebuild() care incarcarca toate png-urile din proiect intr-o colectie de imagini. In main.prg este executat la un moment dat acest "_png_loader.prg".

Totul e ok in varianta asta, dar nu prea imi place ca depind si de projecthook, mai uit de "do _png_loader" si m-am gandit sa creez o clasa care la instantiere scaneaza toate png-urile si le incarca in imagini, dinamic, fara nici un fel de setup in prealabil.
Suna bine, dar cum sa scanez propriul exe-ul dupa png-uri ?! Adir() nu functioneaza (stiu.. logic.. dar am incercat)

Idei ?
 11/23/2009 3:30:13 PM
User is offlineDaniel Buduru
2141 posts
1st




Re: Cum pot obtine o lista a fisierelor incluse in exe (din acelasi exe)
 (N/A) Modified By Daniel Buduru  on 11/23/2009 4:05:16 PM)
Ar fi cateva solutii ...

Recomandabila este convertirea PNG-urilor al BM_uri cu fond alb (255,255,255), fond pe care vfp il face automat transparent.
Un utilitar care face aceasta conversie este aici:
http://weblogs.foxite.com/vfpimaging/archive/2008/12/15/7441.aspx

Pentru PNG, eu as opta pentru loose coopling si as pune chiar in clasa butonului codul care sa incarce PNG-ul in colectie.

Pentru varianta existenta, se poate construi cu projecthook o lista de fisiere grafice, lista care sa fie inclusa in proiect, si pe care sa o ia ca argument png loader-ul.

Lista fisierelor incluse in aplicatie se poate obtine din exe sau app, daca aplicatia nu este criptata.
Codul urmator pune intr-un array lista fisierelor incluse in exe:


ASTACKINFO(ast)
cExeFile=ast(1,2)
IF !INLIST(lower(Justext(cExeFile)),'exe','app')
     return
endif
cExeStr=Filetostr(cExeFile)
IF lower(justext(cExeFie))='exe'
   nAppLength=CToBin(Right(cExeStr,4),'rs')
   cAppStr=Right(cExeStr,nAppLength+1)
   cAppStr=Left(cAppStr,Len(cAppStr)-14)
ELSE
  cAppStr=cExeStr
ENDIF
nFileListOffset=CToBin(Left(Right(cAppStr,20),4),'rs')+4
cFileList=Substr(cAppStr,nFileListOffset+1)
cFileList=Left(cFileList,At(Chr(0)+Chr(2),cFileList)-1)
Dimension  al[1]
Alines(al,cFileList,1,Chr(0))
FOR ii=1 TO ALEN(al,1)
    ? al[ii]
next   

Daniel Buduru
  Visual FoxPro  Clase - VCX si PRG  Cum pot obtine ...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement