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
 
MichaelT

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

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

  Alt 15. Jan 2018, 17:40
Der Sinn von einem Record und auch das revolutionäre der Verbundstrukturen war, dass man Informationen Gruppieren konnte und pro Instanz konnte gemeinsam verwalten. Ein Objekte als Instanz einer Klasse fällt in diese Kategorie. Vorher gab es nur ARRAYS von Basisdatentypen.

Aber du kannst nur auf Informationen bestehender Verbundstrukturen zugreifen und sonst sind die Objekte gleich und das wird ausgedrückt durch NULL/NIL.

Du sagst, 'Not In List'. Alternativ dazu wäre das NULL resp. Leere Objekt. In dem könnte man isAlive := False setzen.

Selbst wenn du eine Verbundstruktur schachtelst.

Delphi-Quellcode:

type TEnvelope = record
  // pointer to object
  reference : POINTER TO AbstractDataType // in Modula Slang
  isAlive : boolean;
end;
Kannst du dir noch immer nicht sicher sein, ob die Referenz noch lebt. Du könntest das zwar mit Klassen machen und sicherstellen, dass IsAlive private bleibt und nur ausglesen werden kann und unter Verantwortung der Klasse TEnvolope synchron mit der Erzeugung einer Objektinstanz gesetzt wird usw... Das Problem ob der Envelope initialisiert ist bleibt und damit ist nichts gewonnen.

Dann hast du nur Schnittstellen die TEnvelopes übergeben bekommen

Du kannst noch die Erzeugung der Objekte der Klasse überlassen und die Verwaltung ihrer Instanzen und indirekt zugreifen. Im Fall von NotAssigned käme ein leeres Objekt zurück. Damit würdest du die Abfrage mit Assigned netter gestalten, aber ändert nichts am langen Ende. Dadurch, dass die Klasse die Objekte selbst verwaltet verschwindet auch deine Verantwortung dieses Singelton freizugeben.

was ich meinte war:

var
objectAvail: boolean;

begin
objectAvail := False;
procedure initObject;
begin
...code der das object zur verfügung stellt und festgestellt wird obs initialisiert ist mit diesem ergebnis:
objectAvail:= True;
end;
procedure killObject;
begin
...code der das object freigibt mit diesem ergebnis:
objectAvail:= False;
end;

initObject;
IF-block start..
if objectAvail then ...code
endif;
end;

oder hab ich alles falsch verstanden?
  Mit Zitat antworten Zitat
 


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 13:44 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