Einzelnen Beitrag anzeigen

AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
291 Beiträge
 
Delphi 12 Athens
 
#1

Access Violation in TObject.InheritsFrom von "is"-Operator

  Alt 5. Jul 2024, 09:53
Moin,

ich habe hier gerade ein seltsames Problem, bei dem ich mal nachfragen wollte, ob das jemandem was sagt:
Ich hatte in Verbindung mit einer TMS-Komponente eine Zugriffsverletzung und hatte denen das mit einem sehr einfachen Testprojekt mitgeteilt. Dummerweise tritt bei denen das Problem partout nicht auf, was eine Lösung erschwert.

Debuggen liefert folgendes:
Die auslösende Codezeile ist eine einfache Klassenüberprüfung im Format "If (XYZ is TIchBinEineKlasse)". Von da aus geht es nach "System._IsClass" und von da aus zuguterletzt nach "System.TObject.InheritsFrom", wo es dann in der Codezeile "P := PPointer(@PByte(P)[vmtParent])^;" knallt.
Bevor es knallt ist das Programm aber schon einmal über besagte auslösende Codestelle problemlos drübergelaufen.
Und nur um das das Offensichtliche auszuschließen: "XYZ" ist kein Nullpointer.

Dementsprechend habe ich zwei Merkwürdigkeiten:

1. Dass es bei der Nutzung vom is-Operator überhaupt knallen kann. Es ist ja nicht so dass man dabei irgendwas falsch machen könnte.
2. Dass es nur bei mir auftritt. Wobei ich es sicherheitshalber auch nochmal auf einem anderen PC mit komplett eigener Kompilierung ebenfalls reproduzieren konnte.

Ich habe die neuste Delphi Version mit Patch, das neuste Windows 11, die neuste Komponentenversion und das Projekt in dem ich es reproduziere ist ein absolut jungfräuliches und minimalistisches Projekt ohne irgendwelche Einstellungsänderungen etc, d.h. auch da kann nichts schieflaufen. Ich kann mir auch nicht vorstellen, dass das irgendwie an einer allgemeinen Delphi-Einstellung hängen sollte, will es aber auch nicht ausschließen.

Hat irgendwer sowas schonmal gehabt?
  Mit Zitat antworten Zitat