AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ressourcenschutz wird übergangen

Ein Thema von barnti · begonnen am 31. Mär 2004 · letzter Beitrag vom 31. Mär 2004
Antwort Antwort
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

Ressourcenschutz wird übergangen

  Alt 31. Mär 2004, 14:09
Hi,

habe die folgenden Zeilen:
Delphi-Quellcode:
...
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;
An der beschriebenen Stelle bricht das Programm mit einer Schutzverletzung ab, ohne in den Resourcenschutzblock
zu springen.

Was mache ich falsch? Warum wird der Except-Teil nicht ausgeführt?
Danke!
Gruß,

Barnti
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Ressourcenschutz wird übergangen

  Alt 31. Mär 2004, 14:23
Zitat von barnti:
An der beschriebenen Stelle bricht das Programm mit einer Schutzverletzung ab, ohne in den Resourcenschutzblock zu springen.
Das ist kein Resourcenschutzblock.
Ein Resourceschutzblock hat eine folgende Struktur:
Delphi-Quellcode:
// Resource anfordern (GetBookmark)
try
   // mit Resource arbeiten (GotoBookmark)
finally
   // Resource freigeben (FreeBookmark)
end
Ich würde mal kräftig von Assert Gebrauch machen.

Delphi-Quellcode:
// 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
siehe auch Delphi Fehlersuche
Andreas
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Ressourcenschutz wird übergangen

  Alt 31. Mär 2004, 14:31
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?
Gruß,

Barnti
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Ressourcenschutz wird übergangen

  Alt 31. Mär 2004, 14:50
Zitat von barnti:
Assert liefert mir auch nicht mehr als ich schon weiß! Oder?
Es beweisst, dass alle Objekte <> nil sind. Andernfalls würde hier
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 )

Zitat von barnti:
Wo die Zugriffsverletzung geschieht weiß ich. Nur warum wird in diesem Fall nicht der der Except-Teil angesprungen?
Bevor der Except-Teil betreten wird, wird die Exception zuerst in der IDE angezeigt.
Lässt man das Programm weiterlaufen, kommt man durch den Except-Abschnitt.
Andreas
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: Ressourcenschutz wird übergangen

  Alt 31. Mär 2004, 14:53
Zitat von barnti:
Was mache ich falsch? Warum wird der Except-Teil nicht ausgeführt?
Startest du dein Programm zufälliger Weise aus Delphi heraus (sprich: F9). In dem Fall würde ich mir keinen Kopf machen. Es ist eine Standardeinstellung von Delphi, bei Sprach-Exceptions zu stoppen. Das kann man natürlich auch abschalten.
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Ressourcenschutz wird übergangen

  Alt 31. Mär 2004, 15:06
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.
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Ressourcenschutz wird übergangen

  Alt 31. Mär 2004, 15:11
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...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Ressourcenschutz wird übergangen

  Alt 31. Mär 2004, 15:16
Hi,
Zitat von SirThornberry:
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...
Da ich im Exception-Block einen Breakpoint gesetzt habe, ist zu sagen: hier kommt die Ausführung nie an...

Wahrscheinlich hast Du Recht. Es ist keine 'normale' Zugriffsverletzung.
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Ressourcenschutz wird übergangen

  Alt 31. Mär 2004, 15:18
Du könntest noch probieren ob Application.OnException funktioniert
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Ressourcenschutz wird übergangen

  Alt 31. Mär 2004, 15:34
Hi,
Zitat von SirThornberry:
Du könntest noch probieren ob Application.OnException funktioniert
werde ich machen aber nicht mehr heute. Werde morgen wieder hier sein...

Danke erstmal!
Gruß,

Barnti
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz