Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi procedure System.Fail? (https://www.delphipraxis.net/67084-procedure-system-fail.html)

KingIR 9. Apr 2006 13:02


procedure System.Fail?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!

Bin grade über eine mir bis Dato unbekannte Prozedur gestolpert. Sie heißt Fail und ist eine der Prozeduren für die Delphi so tut, als wäre sie in der Unit System deklariert, in Wirklichkeit aber direkt in den Compiler eingebaut ist.

Google konnte auch nicht helfen, genausowenig die Delphi-Hilfe, also, weiß jemand von euch was diese Prozedur tut? Evtl. melden dass das Erstellen eines Objektes fehlgeschlagen ist (der Aufruf befindet sich in einem Konstruktor) und dann wie exit abbrechen?

Der Code, um den es sich handelt, stammt aus dem Projekt curlpas, siehe angehängter Screenshot.

Gruß & Dank! :dp:

SirThornberry 9. Apr 2006 13:11

Re: procedure System.Fail?
 
die procedure fail ist nicht direkt im Compiler eingebaut sondern befindet sich tatsächlich in der Unit System. Die funktion ist komplett in Assembler und nach den Kommentaaren zu urteilen bewirkt sie das der speicher frei gegeben wird wenn ein Object <> nil ist.

KingIR 9. Apr 2006 13:17

Re: procedure System.Fail?
 
Ahja! Ich hatte nur nach Fail, nicht nach _Fail in der System.pas gesucht... :wall:

Danke auf jeden Fall, wieder was gelernt... :)

Hawkeye219 9. Apr 2006 13:36

Re: procedure System.Fail?
 
Hallo,

Die Standardprozedur Fail ist ein Überbleibsel aus Borland Pascal. Sie diente beim alten Objektmodell dazu, den Speicher für eine Instanz im Fehlerfall innerhalb des Konstruktors freizugeben. Danach wurde der Konstruktor verlassen.

Damals hatten wir noch keine Exceptions...

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 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