vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Anwendung 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.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Anwendung crasht, wenn Klassenvariablen Kopie gelöscht wird181Mandelkeks30.03.25 14:17
Re: Anwendung crasht, wenn Klassenvariablen Kopie gelöscht w...77markusxy30.03.25 20:02
Re: Anwendung crasht, wenn Klassenvariablen Kopie gelöscht w...75Mandelkeks31.03.25 09:23
Re: Anwendung crasht, wenn Klassenvariablen Kopie gelöscht w...36markusxy08.04.25 22:41
Re: Anwendung crasht, wenn Klassenvariablen Kopie gelöscht w...32Mandelkeks08.04.25 23:05
Re: Anwendung crasht, wenn Klassenvariablen Kopie gelöscht w...34markusxy09.04.25 13:39
Re: Anwendung crasht, wenn Klassenvariablen Kopie gelöscht w...24Mandelkeks09.04.25 14:06
Re: Anwendung crasht, wenn Klassenvariablen Kopie gelöscht w...28markusxy09.04.25 15:19
Re: Anwendung crasht, wenn Klassenvariablen Kopie gelöscht w...22Mandelkeks09.04.25 20:45

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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