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 2 von 2     12   
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.075 Beiträge
 
Delphi 10.4 Sydney
 
#1

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

  Alt 14. Nov 2017, 08:18
Der TE hat sich zuletzt am 11. November gemeldet.
Es ist wohl müssig weitere Tipps zu geben.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

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

  Alt 14. Nov 2017, 08:27
Klingt zumindest verdächtig nach nicht gut durchdachten Code-Design.
Solche Wertungen tun weh, sind unsachlich + nicht hilfreich.
Finde jetzt nicht, dass meine Vermutung abwertend oder unhöflich war und wenn sie doch so aufgenommen wurde, dann war das definitiv nicht meine Intention. Da der TE sich bisher nicht mehr gemeldet hat, sicherlich ein wenig spekulativ (aber dennoch basierend auf den vorher getätigten Aussagen).

Deshalb bleibe ich dabei:
Wenn ich mir während ich auf einem Objekt arbeite (sogar zwischen zwei Bedingungen/Funktionsaufrufen in einer Abfrage) dieses Objekt selbst unter den Füßen wegziehe, indem ich es zerstöre, dann ist das nunmal - vorsichtig ausgedrückt - kein optimales Code-Design. Sowas passiert auch (die Verwendung von Threads mal abgesehen) wirklich nur dann, wenn man nicht eindeutig definiert, wer ein Objekt "besitzt". Im Optimalfall sollte der Besitzer das Objekt sowohl erstellen, als auch nach getaner Arbeit wieder freigeben.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Fukiszo
(Gast)

n/a Beiträge
 
#3

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

  Alt 15. Jan 2018, 13:13
bevor dein IF-block anfängt setz ein boolean auf dein objekt,
markier es.
innerhalb deines IF-block reagier auf den boolean.
der externe code der das objekt behandelt muss dann lediglich das boolean setzen.
true = objekt steht zur verfügung
false = objekt ist futsch.
so kann dein IF-block um ein weiteres IF-"boolean" ergänzt werden ))
  Mit Zitat antworten Zitat
MichaelT

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

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

  Alt 15. Jan 2018, 15:20
Die Diskussion ist so alt wie der Pointer selbst. Entweder man programmiert passiv und frägt in der Funktion alles ab oder man ist aktiv und prüft Zeiger vor der Übergabe.

Aktiv kann man so weit treiben, dass man Fehler in der Logik auf Speicherverletzungen zurückführt oder einfach bieder prüft bevor man ein Objekt zumeist an eine Prozedur/Methoden usw.. übergibt.

Wenn man weiß was man tut, kann man auch mit einem NULL Objekt arbeiten, sprich ein leeres Objekt mit gültiger Speicheradresse. Das wäre was in der Antwort nach deiner wurde angedeutet.

Als Beispiel aus der reinen prozeduralen Welt einen Ringbuffer als doppelt verkettete Liste realsiert in die man nur in der Mitte einfügt und rauslöscht wäre ähnlich gelagert.

Damit man aber nicht verrückt müsst man ein reines Objektsystem (ala) Smalltalk haben oder Mehrfachvererbung. Eine Interface welches Assigned zurückgibt usw...

Sämtliche passive Varianten leiden of darunter schwer zu debuggen zu sein. Du bekommst teils 'Side Effect' artige technisch korrekte, aber anwendungssemantisch schlicht falsche Ergebnisse. Logikfehler werden einfach verschleppt.


Deshalb bleibe ich dabei:
Wenn ich mir während ich auf einem Objekt arbeite (sogar zwischen zwei Bedingungen/Funktionsaufrufen in einer Abfrage) dieses Objekt selbst unter den Füßen wegziehe, indem ich es zerstöre, dann ist das nunmal - vorsichtig ausgedrückt - kein optimales Code-Design. Sowas passiert auch (die Verwendung von Threads mal abgesehen) wirklich nur dann, wenn man nicht eindeutig definiert, wer ein Objekt "besitzt". Im Optimalfall sollte der Besitzer das Objekt sowohl erstellen, als auch nach getaner Arbeit wieder freigeben.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:19 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-2025 by Thomas Breitkreuz