Hallo Gemeinde,
ich bekomme folgenden Fehler
System.AccessViolationException ist aufgetreten.
Message="Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist."
Im Moment versuche ich ein altes VB6 Programm in VB.Net umzuschreiben
Dabei wurde in VB6 folgende Api Funktion verwendet
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Integer, ByVal Source As String, ByVal Length As Integer)
Folgender Funktionsaufruf:
Public Function StringAsLong(ByVal sValue As String) As Long
'4 Byte-String als 32 Bit-Wert
Dim l As Long
CopyMemory l, ByVal sValue, 4
StringAsLong = l
End Function
Bei einem sValue = "1000" lieferte die Funktion den Wert 1 zurück.
kleine Korrektur:
Die Werte 1000 sind Byte Werte die im String mit komischen Zeichen dargestellt werden.
ich versuche nun dieses in VB.Net umzusetzen. Jedoch scheitere ich gerade an der oberen Fehlermeldung.
Mein Code:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Integer, ByVal Source As String, ByVal Length As Integer)
Private Sub Test()
Dim sString As String
Dim iInteger As Integer
sString = "1000"
iInteger = StringAsInteger(sString)
End Sub
Private Function StringAsInteger(ByVal sValue As String) As Integer
'4 Byte-String als 32 Bit-Wert
Dim l As Integer
CopyMemory(l, sValue, 4)
Return l
End Function
Liegen die Speicherbereiche für Variablen in einem geschützen Speicher?
Gibt es einen VB.net Weg für CopyMemory?
Grüße
Tim
ich bekomme folgenden Fehler
System.AccessViolationException ist aufgetreten.
Message="Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist."
Im Moment versuche ich ein altes VB6 Programm in VB.Net umzuschreiben
Dabei wurde in VB6 folgende Api Funktion verwendet
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Integer, ByVal Source As String, ByVal Length As Integer)
Folgender Funktionsaufruf:
Public Function StringAsLong(ByVal sValue As String) As Long
'4 Byte-String als 32 Bit-Wert
Dim l As Long
CopyMemory l, ByVal sValue, 4
StringAsLong = l
End Function
Bei einem sValue = "1000" lieferte die Funktion den Wert 1 zurück.
kleine Korrektur:
Die Werte 1000 sind Byte Werte die im String mit komischen Zeichen dargestellt werden.
ich versuche nun dieses in VB.Net umzusetzen. Jedoch scheitere ich gerade an der oberen Fehlermeldung.
Mein Code:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal Destination As Integer, ByVal Source As String, ByVal Length As Integer)
Private Sub Test()
Dim sString As String
Dim iInteger As Integer
sString = "1000"
iInteger = StringAsInteger(sString)
End Sub
Private Function StringAsInteger(ByVal sValue As String) As Integer
'4 Byte-String als 32 Bit-Wert
Dim l As Integer
CopyMemory(l, sValue, 4)
Return l
End Function
Liegen die Speicherbereiche für Variablen in einem geschützen Speicher?
Gibt es einen VB.net Weg für CopyMemory?
Grüße
Tim
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Codrix“ ()