![]() |
access violation beim hinzufügen eines Elements in eine Liste
der aktuelle Fehler in unserer Anwendung tritt beim hinzufügen einen Elements in eine Objectliste auf,
Madshi maxexcept hüpft beim Debuggen direkt zu dieser Codezeile in system.pas
Delphi-Quellcode:
procedure DynArraySetLength(var a: Pointer; typeInfo: Pointer; dimCnt: NativeInt; lengthVec: PNativeint);
..... // Calculate the needed size of the heap object t := PDynArrayTypeInfo( PByte(typeInfo) + PDynArrayTypeInfo(typeInfo).name ); .... mein Code Block zum Einfügen eines Elements in die Liste ist schon einige Jahre alt und hat bisher ohne Probleme funktioniert. Wie kann ich hier weiter debuggen ?? |
AW: access violation beim hinzufügen eines Elements in eine Liste
Welcher Codeblock?
|
AW: access violation beim hinzufügen eines Elements in eine Liste
Und was hat sich seit dem in deinem Programm geändert?
Andere Delphi Version vielleicht? Aber wie schon geschrieben: ohnew etwas Code wie du das aufrufst kommen wir nicht weiter. Ich gehe davon aus, dass der Fehler reproduzierbar jedes Mal auftritt und nicht sporadisch? |
AW: access violation beim hinzufügen eines Elements in eine Liste
Zitat:
|
AW: access violation beim hinzufügen eines Elements in eine Liste
an anderen Stellen, Routinen wurde (natürlich) schon was geändert, aber alle Änderunmgen sehen harmlos aus & die Access Violation findet halt in einem alten Code Fragment ohne bezug zu den anderen Klassen, Routinen ... statt.
Wie finde ich jetzt die Stelle mit dem Fehler ?? ![]() was sind den typische Konstellationen welche zu einem Heap fehler führen ? |
AW: access violation beim hinzufügen eines Elements in eine Liste
Zitat:
|
AW: access violation beim hinzufügen eines Elements in eine Liste
wie finde ich heraus welche Variable unter 00000000004177AC gespeichert ist, welche Tool kann mir beim Debuggen weiterhelfen ?
Delphi-Quellcode:
Message: Access violation at address 00000000004177AC in module 'TESTS_VCLGUIAPP.exe'. Read of address 0000000000000001
|
AW: access violation beim hinzufügen eines Elements in eine Liste
Modul-Liste (DLLs) oder in der Assembler-Ansicht hochscrollen
da siehst dann in welchem Programmteil du bist sind Debuginfos oder Externals-Definitionen vorhanden, siehst'e auch noch die Funktion und vielleicht Codezeile. |
AW: access violation beim hinzufügen eines Elements in eine Liste
Zitat:
Delphi-Quellcode:
sieht eindeutig nach einen Zugriff auf einen Speicherblock (z. B. ein Objekt) über einen nil pointer aus.
Message: Access violation at address 00000000004177AC in module 'TESTS_VCLGUIAPP.exe'. Read of address 0000000000000001
|
AW: access violation beim hinzufügen eines Elements in eine Liste
Es besteht die Wahrscheinlichkeit das die Objektliste bereits freigegeben ist und die Variable weiterhin auf den freigegebenen Speicherbereich zeigt. Solche Fehler führen zur Laufzeit nicht in jedem Fall direkt zur Zugriffsverletzung. Nur wenn der eingebaute Speichermanager den für das Objekt reservierten Speicher auch bereits an das Betriebsystem zurückgegeben hat. Dashalb kann eine Änderung an einem ganz anderen Programmteil plötzlich den Fehler zu Tage treten lassen.
|
AW: access violation beim hinzufügen eines Elements in eine Liste
Ein Dynamisches Array ist ein ManagedType .... so lange da niemand an der Speicherverwalung zumpfuscht oder z.B. einen Bufferoverrun hat, sollte es an der Stelle nie knallen, weil wenn das wirklich weg ist, dann würde der Zeiger auf NIL stehen und das würde zu Beginn abgefangen.
|
AW: access violation beim hinzufügen eines Elements in eine Liste
ich kann das Problem an einem minimalen Code-Fragment darstellen, dafür einen neuen Thread hier in der DP
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz