![]() |
Ressourcenschutz wird übergangen
Hi,
habe die folgenden Zeilen:
Delphi-Quellcode:
An der beschriebenen Stelle bricht das Programm mit einer Schutzverletzung ab, ohne in den Resourcenschutzblock
...
if found then try // Markieren des akt. Datensatzes Bookmark:= Grid.DataSource.DataSet.GetBookmark; // Filtereigenschaft zurücksetzen Grid.DataSource.DataSet.Filter:= FormerFilter; // Auf den markierten Datensatz springen Grid.DataSource.DataSet.GotoBookmark(Bookmark); // Hier gibt es die Schutzverletzung // Bookmark entfernen Grid.DataSource.DataSet.FreeBookmark(Bookmark); except Grid.DataSource.DataSet.Filter:= FormerFilter; end; end; zu springen. Was mache ich falsch? Warum wird der Except-Teil nicht ausgeführt? Danke! |
Re: Ressourcenschutz wird übergangen
Zitat:
Ein Resourceschutzblock hat eine folgende Struktur:
Delphi-Quellcode:
Ich würde mal kräftig von Assert Gebrauch machen.
// Resource anfordern (GetBookmark)
try // mit Resource arbeiten (GotoBookmark) finally // Resource freigeben (FreeBookmark) end
Delphi-Quellcode:
siehe auch
// erst mal prüfen
Assert(Assigned(Grid)); Assert(Assigned(Grid.DataSource)); Assert(Assigned(Grid.DataSource.DataSet)); // jetzt ist alles wasserdicht, der eigentliche Code kann beginnen ![]() |
Re: Ressourcenschutz wird übergangen
Hi,
hast Recht! Wie auch immer. Assert liefert mir auch nicht mehr als ich schon weiß! Oder? Wo die Zugriffsverletzung geschieht weiß ich. Nur warum wird in diesem Fall nicht der der Except-Teil angesprungen? |
Re: Ressourcenschutz wird übergangen
Zitat:
eine Exception erzeugt. Und zwar bevor das Programm auf eine Zugriffsverletzung läuft. Natürlich nur, wenn in den Compileroptionen -> Debuggen -> Assertion, Schalter {$C} gesetzt ist( was zur Fehlersuche zu empfehlen ist :thuimb:) Zitat:
Lässt man das Programm weiterlaufen, kommt man durch den Except-Abschnitt. |
Re: Ressourcenschutz wird übergangen
Zitat:
|
Re: Ressourcenschutz wird übergangen
Hi Leute,
die Sprachexceptions sind ausgeschaltet! Und 'Ja' die betreffenden Objekte sind nicht Nil! Nachdem die Schutzverletzung ausgelöst wurde, kann ich die Anwendung nicht weiterlaufen lassen. Es wird mir der 'Hex-Viewer' angezeigt. Beim Wiederanstoßen der IDE, wird der Fehler erneut ausgelöst. |
Re: Ressourcenschutz wird übergangen
So wies aussieht wird vermutlich doch der exceptblock ausgeführt. Die erste exception kommt vom Debugger, die zweite vom Programm ansich und dann sollte es normal im except-block weitergehen. Kann natürlich sein das bei accessviolations da nicht reingegangen wird weil es ja eine systemfehlermeldung ist und nicht von ner komponente ausgelöst wird...
|
Re: Ressourcenschutz wird übergangen
Hi,
Zitat:
Wahrscheinlich hast Du Recht. Es ist keine 'normale' Zugriffsverletzung. |
Re: Ressourcenschutz wird übergangen
Du könntest noch probieren ob Application.OnException funktioniert
|
Re: Ressourcenschutz wird übergangen
Hi,
Zitat:
Danke erstmal! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:41 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