Toon posts:

[vb.net]Delegate in functions

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb op het forum gezocht en in diverse boeken gebladerd maar ik heb niets kunnen vinden

Ik ben een resource retriever voor vb.net het maken en daarbij moet ik de resource types gaan enumen, bij vb 6 kon je gewoon doodleuk addressof gebruiken maar dat vonden ze zeker te makkelijk gaan :p

Ik heb zelf al iets gemaakt maar hij voert de code gewoon niet uit, het openen van de resource gaat gewoon vlekkeloos alleen dus het enumen ervan gaat mis

Dit is wat ik heb, er zit dus een fout in, ik weet niet hoeveel ervan fout is

code:
1
2
3
4
5
6
7
8
9
10
11
12
Declaraties:
Private Delegate Sub EnumTypesFuncProc(ByVal hModule As Long, ByVal lpType As Long, ByVal lParam As Long)
Private Declare Function EnumResourceTypes Lib "kernel32.dll" Alias "EnumResourceTypesA" (ByVal callback As EnumTypesFuncProc) As Int32

Functie:
Private Sub EnumTypesFunc(ByVal hModule As Long, ByVal lpType As Long, ByVal lParam As Long)
    MessageBox.Show("JAaaaaaaaaaaaaaa")
End Sub

Aanroeping:
 Dim CallBack As New EnumTypesFuncProc(AddressOf EnumTypesFunc)
 EnumResourceTypes(CallBack)


als ik bij de aanroeping met f8 eroverheen ga gebeurt gewoon niets, maak ik een break op de enumtypesfunc wordt die nooit aangeroepen

Hopelijk heeft iemand ervaring hiermee.

Verwijderd

Topicstarter
ff een schopje en wat ik heb gekregen

Met een aantal kleine aanpassingen kreeg ik hem zover voor hem een keer te laten draaien, geprobeerd in een do while loop te zetten en een for each maar niet gelukt. Toen hij erover heen ging klopte de waarde niet die ik had, daardoor denk ik dat er ergens een fout in de declaraties zitten

Verwijderd

Topicstarter
Ik heb het probleem opgelost, deze thread kan worden verwijderd of gesloten worden

Verwijderd

misschien is het fijn als je even de oplossing post, voor als ooit iemand nog eens dit probleem heeft.

  • MrSleeves
  • Registratie: Februari 2004
  • Laatst online: 10-04 19:23

MrSleeves

You'll thank me later.

Verwijderd schreef op zaterdag 18 december 2004 @ 09:36:
misschien is het fijn als je even de oplossing post, voor als ooit iemand nog eens dit probleem heeft.
Ik gok erop dat hij in de do-while loop de functie iets te vaak achter elkaar aanriep.
Bij een callback, wordt er wel verwacht dat je netjes wacht tot die callback ook echt komt en niet de functie ondertussen nog een keer aanroept.

Maar toch zou de code inderdaad fijn zijn voor anderen. :)

30Drie Web Design & IT Consultancy | Raven Consultancy Services


Verwijderd

Topicstarter
In vb.net moet je de waarde die je moet aanroepen als de delegate aanroepen

Ik heb gewoon het project omgezet en dan in de msdn gekeken

dan krijg je dus
code:
1
2
3
4
5
6
7
8
9
10
11
12
'declaraties
    Private Declare Function EnumResourceTypes Lib "kernel32.dll" Alias "EnumResourceTypesA" (ByVal hModule As Int32, ByVal lpEnumFunc As EnumResourceTypesDelegate, ByVal lParam As Int32) As Int32
    Private Delegate Function EnumResourceTypesDelegate(ByVal hModule As Int32, ByVal lpEnumFunc As Int32, ByVal lParam As Int32) As Int32

'aanroeping
EnumResourceTypes(hModule, AddressOf EnumTypesFunc, 0)

'functie
    Private Function EnumTypesFunc(ByVal hModule As Integer, ByVal lpType As Integer, ByVal lParam As Integer) As Integer
Messagebox.Show(lpType)
        Return True
    End Function
Pagina: 1