AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi AV innerhalb des if-Statements lässt sich nicht abfangen
Thema durchsuchen
Ansicht
Themen-Optionen

AV innerhalb des if-Statements lässt sich nicht abfangen

Ein Thema von uups · begonnen am 11. Nov 2017 · letzter Beitrag vom 15. Jan 2018
Antwort Antwort
Seite 1 von 2  1 2      
uups

Registriert seit: 23. Aug 2004
68 Beiträge
 
#1

AV innerhalb des if-Statements lässt sich nicht abfangen

  Alt 11. Nov 2017, 17:53
Hallo!

Ich habe eine etwas längere if-Statement bestehend aus mehreren Dutzend ANDs und ORs, die allesamt auf ein bestimmtes Object zugreifen. Wird dieses bestimmtes Object freigegeben, während IF gerade diese ANDs und ORs durläuft, erscheinen mehrere AV nacheinander, die sich mit TRY..EXECPT..END nicht abfangen lassen. Kann ich was dagegen tun?

Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: AV innerhalb des if-Statements lässt sich nicht abfangen

  Alt 11. Nov 2017, 18:19
Ja. Gib dss Objekt nicht frei, wenn noch darauf zugegriffen wird oder noch werden soll. Oder sorg dafür das der if Block verlassen wird, wenn das Objekt freigegeben wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
uups

Registriert seit: 23. Aug 2004
68 Beiträge
 
#3

AW: AV innerhalb des if-Statements lässt sich nicht abfangen

  Alt 11. Nov 2017, 18:28
Ja. Gib dss Objekt nicht frei, wenn noch darauf zugegriffen wird...
Wie kann ich prüfen, on auf ein Object gerade zugegriffen wird?
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#4

AW: AV innerhalb des if-Statements lässt sich nicht abfangen

  Alt 11. Nov 2017, 18:32
Zitat:
Ich habe eine etwas längere if-Statement bestehend aus mehreren Dutzend ANDs und ORs
Ich würde hier ansetzen und das erst einmal aufteilen.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#5

AW: AV innerhalb des if-Statements lässt sich nicht abfangen

  Alt 11. Nov 2017, 20:06
Wie kann ich prüfen, on auf ein Object gerade zugegriffen wird?
Den Code durchschauen? Du musst doch wissen, wo dein Code auf das Objekt zugreift. If-Bedingungen sollten eigentlich nie irgendeine Aktion ausführen, schon gar nicht ein Objekt freigeben.

Und im übrigen stimme ich Glados zu: Mehrere Dutzend Einzelbedingungen - also mehr als 24 Stück - in einem einzelnen If-Statement? Schon ab drei oder vier wird's (total) unübersichtlich.

Grüße
Dalai
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#6

AW: AV innerhalb des if-Statements lässt sich nicht abfangen

  Alt 12. Nov 2017, 13:15
wir wirklich während der Prüfung innerhalb einer If Abfrage gelöscht?

Wenn nicht, vorher mal mit if Assigned(meinObjekt) then prüfen ob das noch vorhanden ist.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: AV innerhalb des if-Statements lässt sich nicht abfangen

  Alt 12. Nov 2017, 16:37
Das ist aber in diesem Fall nur eine Krücke und keine Lösung für das eigentliche Problem. Ich meine, er zieht sich ja selbst den Teppich unter den Füßen weg. Und wenn ich es selbst mache, muss ich danach nicht noch mal gucken, ob der Teppich noch da ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: AV innerhalb des if-Statements lässt sich nicht abfangen

  Alt 12. Nov 2017, 17:27
Ich meine, er zieht sich ja selbst den Teppich unter den Füßen weg.
Nee das macht sein Programm, und plötzlich und unerwartet fehlt da was.
Und selbst wenn es so wäre, irgendwie müßte ja theoretisch das Fehlen eines Wertes/Objektes mit einkalkuliert sein.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: AV innerhalb des if-Statements lässt sich nicht abfangen

  Alt 13. Nov 2017, 05:38
Ich meine, er zieht sich ja selbst den Teppich unter den Füßen weg.
Nee das macht sein Programm,
Und wer hat das Programm geschrieben? Und da ist auch nicht plötzlich und unerwartet was weg. Er hat es so programmiert, dass es weg ist. Es heißt doch immer so schön: "Das Programm macht nicht, was du willst, sondern was du programmierst."
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MichaelT

Registriert seit: 14. Sep 2005
Ort: 4020 Linz
555 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: AV innerhalb des if-Statements lässt sich nicht abfangen

  Alt 13. Nov 2017, 15:42
Mit Verlaub, das hört sich seltsam an. Code?

Einfache Sache, wird aber auch nicht wirklich zutreffend sein, wäre sofern die Referenz auf nil gesetzt, dass ist die Kurzschlussauswertung abgedreht ist.

{$B+} or {$B-} {$BOOLEVAL ON} or {$BOOLEVAL OFF}

If Assigned(poidl) AND ((poidl.Alter < 12) OR (poidl.IsBlunzenFett)) then .... funktioniert dann auch nicht mehr, auch wenn der poidl NIL ist.

Vermutlich kommt aber der Zeiger mit einer gesetzten ungültigen Adresse daher oder Methoden greifen auf uninitalisierte Objekte zu usw...


Hallo!

Ich habe eine etwas längere if-Statement bestehend aus mehreren Dutzend ANDs und ORs, die allesamt auf ein bestimmtes Object zugreifen. Wird dieses bestimmtes Object freigegeben, während IF gerade diese ANDs und ORs durläuft, erscheinen mehrere AV nacheinander, die sich mit TRY..EXECPT..END nicht abfangen lassen. Kann ich was dagegen tun?

Danke!

Geändert von MichaelT (13. Nov 2017 um 15:53 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:08 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