| |

Fortgeschrittene ProgrammierungAnwendung crasht, wenn Klassenvariablen Kopie gelöscht wird | |  | Autor: Mandelkeks | Datum: 30.03.25 14:17 |
| Hallo
ich finde zu einem etwas "seltsamen" Problem keine Lösung.
Innerhalb eines Klassenmoduls, auf deren Instanz(Variable) von "außerhalb" kein Zugriff besteht, weil die Klasse in unterschiedlichen Unterformularen instanziert wird, habe ich mit CopyMemory eine Kopie der Instanzvariable erstellt (nur mal interessehalber):
'Öffentliches Modul
'Öffentliche Objektvariable
Public oObject as Object 'Im Klassenmodul
'API
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
Dest As Any, _
Source As Any, _
ByVal Bytes As Long)
'Testprozedur
Public Sub Test
MsgBox "Hallo"
End Sub
'Code in Class_Initialize
Private Sub Class_Initialize()
CopyMemory oObject, ObjPtr(Me), 4 'Kopie der Klassenadresse => oObject
End sub 'So kann ich "von außen" auf die Klasse zugreifen, ohne die Instanzvariable kennne zu müssen. Das funktioniert auch einwandfrei:
Sub Main
oObject.Test 'Funktioniert und ruft die Prozedur 'Test' im Klassenmodul auf
End Sub Jetzt kommt das Problem: Wenn ich die Variable wieder löschen will, crasht Access
set oObject = Nothing Dasselbe passiert, wenn die Variablen in der IDE über den kleinen blauen Button 'Zurücksetzen' gelöscht werden.
Alle Versuche zur Ursachenfindung sind gescheitert, z.B. 'ByVal' bei 'CopyMemory'. Jetzt weit ich nicht mehr weiter, denn grundsätzlich wurde mit 'CopyMemory' eine funktionsfähige Kopie der Klasse erstellt, die auch funktioniert, solange die Klasse geöffnet ist. Doch die Kopie der Variable lässt sich nicht mehr löschen, ohne dass Access crasht. Selbst wenn die Klasse geschlossen ist führt das Löschen der Hilfsvariablen zum Abflug.
Hat jemand eine Idee, was ich übersehen habe? WIESO crasht eine Anwendung, wenn eine Variable, deren Objekt gar nicht mehr existiert, auf 0 gesetzt wird? Fühlt sich so an, als wäre die Klasse noch im Speicher, aber 'Class_Terminate' wurde ausgeführt ... ich habe keine Idee mehr 
Beitrag wurde zuletzt am 30.03.25 um 14:36:54 editiert. |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevWizard für VB5/6 
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|