TheDarkConquerer
2006-10-23, 23:13:28
Ahoihoi
Ich habe mich seit kurzem wieder mit VB befasst und schreibe zur Zeit eine Client/Server Anwendung.
Das Problem ist, dass ich dafür Threads benutzen muss. Mit folgendem Prog wollte ich testen ob das mit der ThreadErstellung auch funzt.
Form1
Private Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Boolean
End Type
Dim sec As SECURITY_ATTRIBUTES
Dim ThreadID As Long
Dim ThreadHandle As Long
Private Sub Form_Load()
ThreadHandle = CreateThread(ByVal 0&, &O0, AddressOf inc, &O0, &O0, ThreadID)
CloseHandle (ThreadHandle)
End Sub
Module1 Code:
Dim i As Integer
Dim ret As Integer
Public Sub inc()
ret = 1
For i = 0 To 10
ret = ret + 1
MsgBox ret
Next i
End Sub
Den ersten fehler den er bringt ist folgender:
Compile error: User-Defined type may not be passed ByVal
Sobald ich beim ersten Parameter ne StrukturVariable des Typs SECURITY_ATTRIBUTES übergebe startet zwar das Programm, doch ich bekomme sofort den fehler das VB wegen eines Fehlers beendet werden musste.
Im Eventmanager steht dazu folgendes:
Ereignistyp: Fehler
Ereignisquelle: Application Error
Ereigniskategorie: Keine
Ereigniskennung: 1000
Datum: 23.10.2006
Zeit: 23:00:00
Benutzer: Nicht zutreffend
Computer: mypc
Beschreibung:
Fehlgeschlagene Anwendung vb6.exe, Version 6.0.81.76, fehlgeschlagenes Modul unknown, Version 0.0.0.0, Fehleradresse 0x0012f8b0.
Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie unter http://go.microsoft.com/fwlink/events.asp.
Daten:
0000: 41 70 70 6c 69 63 61 74 Applicat
0008: 69 6f 6e 20 46 61 69 6c ion Fail
0010: 75 72 65 20 20 76 62 36 ure vb6
0018: 2e 65 78 65 20 36 2e 30 .exe 6.0
0020: 2e 38 31 2e 37 36 20 69 .81.76 i
0028: 6e 20 75 6e 6b 6e 6f 77 n unknow
0030: 6e 20 30 2e 30 2e 30 2e n 0.0.0.
0038: 30 20 61 74 20 6f 66 66 0 at off
0040: 73 65 74 20 30 30 31 32 set 0012
0048: 66 38 62 30 0d 0a f8b0..
ich habe schon alles erdenklich ausprobiert. Auch das manuelle setzen der Strukturvariable sec mit With hat nichts geholfen. :mad:
(und bitte keinen Kommentar zum Programmierstil, ich weis selbst das ich unordentlich arbeite ^^)
mfg
TDC
Ich habe mich seit kurzem wieder mit VB befasst und schreibe zur Zeit eine Client/Server Anwendung.
Das Problem ist, dass ich dafür Threads benutzen muss. Mit folgendem Prog wollte ich testen ob das mit der ThreadErstellung auch funzt.
Form1
Private Declare Function CreateThread Lib "kernel32" (lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Boolean
End Type
Dim sec As SECURITY_ATTRIBUTES
Dim ThreadID As Long
Dim ThreadHandle As Long
Private Sub Form_Load()
ThreadHandle = CreateThread(ByVal 0&, &O0, AddressOf inc, &O0, &O0, ThreadID)
CloseHandle (ThreadHandle)
End Sub
Module1 Code:
Dim i As Integer
Dim ret As Integer
Public Sub inc()
ret = 1
For i = 0 To 10
ret = ret + 1
MsgBox ret
Next i
End Sub
Den ersten fehler den er bringt ist folgender:
Compile error: User-Defined type may not be passed ByVal
Sobald ich beim ersten Parameter ne StrukturVariable des Typs SECURITY_ATTRIBUTES übergebe startet zwar das Programm, doch ich bekomme sofort den fehler das VB wegen eines Fehlers beendet werden musste.
Im Eventmanager steht dazu folgendes:
Ereignistyp: Fehler
Ereignisquelle: Application Error
Ereigniskategorie: Keine
Ereigniskennung: 1000
Datum: 23.10.2006
Zeit: 23:00:00
Benutzer: Nicht zutreffend
Computer: mypc
Beschreibung:
Fehlgeschlagene Anwendung vb6.exe, Version 6.0.81.76, fehlgeschlagenes Modul unknown, Version 0.0.0.0, Fehleradresse 0x0012f8b0.
Weitere Informationen über die Hilfe- und Supportdienste erhalten Sie unter http://go.microsoft.com/fwlink/events.asp.
Daten:
0000: 41 70 70 6c 69 63 61 74 Applicat
0008: 69 6f 6e 20 46 61 69 6c ion Fail
0010: 75 72 65 20 20 76 62 36 ure vb6
0018: 2e 65 78 65 20 36 2e 30 .exe 6.0
0020: 2e 38 31 2e 37 36 20 69 .81.76 i
0028: 6e 20 75 6e 6b 6e 6f 77 n unknow
0030: 6e 20 30 2e 30 2e 30 2e n 0.0.0.
0038: 30 20 61 74 20 6f 66 66 0 at off
0040: 73 65 74 20 30 30 31 32 set 0012
0048: 66 38 62 30 0d 0a f8b0..
ich habe schon alles erdenklich ausprobiert. Auch das manuelle setzen der Strukturvariable sec mit With hat nichts geholfen. :mad:
(und bitte keinen Kommentar zum Programmierstil, ich weis selbst das ich unordentlich arbeite ^^)
mfg
TDC