Search  
Thursday, May 24, 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  Win32 API  Dll facut cu VF...
 Dll facut cu VFP, apelat din VFP
 
 9/18/2007 11:55:46 PM
User is offlineycman
5 posts
ycm


Dll facut cu VFP, apelat din VFP
 (N/A)
1. Vreau sa creez un dll din VFP care sa contina forme, clase, proceduri
2. Sa-l apelez tot dintr-un exe facut in tot in VFP.

1. construit dll
2. la aplelare dll mesaj ca nu gaseste 'entry point' in dll, cum rezolv situatia?
 9/20/2007 5:33:56 PM
User is offlineedyshor
1450 posts
1st




Re: Dll facut cu VFP, apelat din VFP
 (N/A)
Poti sa fi un pic mai explicit ?!

Si in ce scop vrei sa-ti pui formurile, clasele si procedurile in dll?
De curiozitate :)

 9/20/2007 11:39:00 PM
User is offlineycman
5 posts
ycm


Re: Dll facut cu VFP, apelat din VFP
 (N/A)
pentru ca sunt formuri care se schimba des sau mai rar ;
pentru ca utilizatori le ia ei de pe internet ;
pentru a imparti executabilul si al micsora ;
etc.
 9/22/2007 1:31:25 PM
User is offlineedyshor
1450 posts
1st




Re: Dll facut cu VFP, apelat din VFP
 (Romania)
Nu-i o idee rea, dar n-am mai facut asta si nu stiu daca/cum merge.
 10/23/2007 2:26:31 PM
User is offlineneagu_laurentiu
101 posts
5th


Re: Dll facut cu VFP, apelat din VFP
 (N/A) Modified By admin  on 10/23/2007 2:42:39 PM)
 
1. Vreau sa creez un dll din VFP care sa contina forme, clase, proceduri
2. Sa-l apelez tot dintr-un exe facut in tot in VFP.

Pai creezi .dll-ul... pentru ce vrei tu nu ai nevoie de o clasa OLEPUBLIC ci pur si simplu compilezi ca .dll !
Incarcarea .dll-ului o faci cu SET PROCEDURE TO FileName.dll dupa care apelezi procedurile/obiectele de acolo !
[editat de admin]
Nu-i nevoie de comentarii de genul asta.

 10/24/2007 8:49:11 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Dll facut cu VFP, apelat din VFP
 (N/A)
 neagu_laurentiu wrote
 
1. Vreau sa creez un dll din VFP care sa contina forme, clase, proceduri
2. Sa-l apelez tot dintr-un exe facut in tot in VFP.

Pai creezi .dll-ul... pentru ce vrei tu nu ai nevoie de o clasa OLEPUBLIC ci pur si simplu compilezi ca .dll !
Incarcarea .dll-ului o faci cu SET PROCEDURE TO FileName.dll dupa care apelezi procedurile/obiectele de acolo !
[editat de admin]
Nu-i nevoie de comentarii de genul asta.



Nu merge asa - confunzi DLL cu FLL. SET PROCEDURE se face in FLL-uri, nu in DLL-uri. Pentru un DLL iti trebuie cel putin o clasa OLEPUBLIC. Pe de alta parte, DLL-urile nu pot avea interfata, deci compilarea unor formuri este exclusa din start. Nici macar MESSAGEBOX() n-ai voie sa ai in DLL. Poti sa-l pui in cod, dar la primul apel al sau dll-ul va esua jalnic.

DLL-urile scrise in VFP se inregistreaza in sistem ca servere COM (cu regsvr32 numedll), trebuie sa expuna metode si proprietati (ca orice server COM, de altfel).

Un exemplu quick'n'dirty (facut in vreo 5 minute). Creati un proiect intr-un folder nou, copiati codul de mai jos intr-un fisier prg, adaugati-l in proiect, build as multithreaded dll. Instantierea se face cu x = CreateObject("Test.TestClass"), apoi x.Operand1 = 5, x.Operand2 = 7, ? x.Adunare() - asta returneaza .T., deci a functionat, iar rezultatul e stocat in x.Rezultat.

Am definit niste array-uri COMATTRIB pentru operanzi si pentru metoda, dar nu si pentru proprietatea Rezultat, ca sa vedeti care este diferenta.

-----------------------------------------
Define Class TestClass As Session OlePublic
    Operand1 = 0
    Operand2 = 0
    Rezultat = 0
   
    *-- Restul liniilor sunt numai pentru VFP 9.
    Dimension Operand1_ComAttrib[4]
    Operand1_ComAttrib[1] = 0x200000 && COMATRIB_WRITEONLY
    Operand1_ComAttrib[2] = "Primul operand" && help-ul din tooltip
    Operand1_ComAttrib[3] = "Operand1" && Capitalizarea proprietatii
    Operand1_ComAttrib[4] = "Numeric" && tipul de date, afisat ca string, pentru aplicatia client

    Dimension Operand2_ComAttrib[4]
    Operand2_ComAttrib[1] = 0x200000 && COMATRIB_WRITEONLY
    Operand2_ComAttrib[2] = "Al doilea operand" && help-ul din tooltip
    Operand2_ComAttrib[3] = "Operand2" && Capitalizarea proprietatii
    Operand2_ComAttrib[4] = "Numeric" && tipul de date, afisat ca string, pentru aplicatia client

    Dimension Adunare_ComAttrib[5]
    Adunare_ComAttrib[1] = 0x100000 && COMATRIB_READONLY
    Adunare_ComAttrib[2] = "Efectueaza adunarea celor doi operanzi." && help-ul din tooltip
    Adunare_ComAttrib[3] = "Adunare" && Capitalizarea proprietatii
    Adunare_ComAttrib[4] = ""
    Adunare_ComAttrib[5] = 0 && numarul de parametri. Remarcati ca array-ul de la metode are 5 elemente.

    Procedure Adunare As Boolean
        Local llSuccess As Boolean
        If Vartype(This.Operand1) = "N" And Vartype(This.Operand2) = "N"
            This.Rezultat = This.Operand1 + This.Operand2
            llSuccess = .T.
        EndIf
        Return llSuccess
    EndProc
EndDefine

----------------------------

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 10/24/2007 1:32:30 PM
User is offlineneagu_laurentiu
101 posts
5th


Re: Dll facut cu VFP, apelat din VFP
 (N/A)

 Nu merge asa - confunzi DLL cu FLL. SET PROCEDURE se face in FLL-uri, nu in DLL-uri.

Da, pe .dll nu merge... dar pe .fxp, .app si .exe merge ! Deci solutia ar fi sa compilezi in formatele acestea.

  Visual FoxPro  Win32 API  Dll facut cu VF...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement