![]() |
Assertion
Hallo
gibt es eingentlich die möglichkeit in Delphi Assertions zu verwenden? |
Re: Assertion
Moin!
Klar, Assert() macht dieses. Benutze ich selber recht gerne... MfG Muetze1 |
Re: Assertion
und wie kann man sie deaktivieren?
|
Re: Assertion
Moin!
Projekt->Optionen->Compiler->Assertions (C) abwählen und Programm neu erstellen... MfG Muetze1 |
Re: Assertion
Für was ist Assert() eigentlich gut?
|
Re: Assertion
Moin!
Damit kannst du Bedingungen in deinem Programm testen. Dies ist sinnvoll während der Entwicklung, um möglichen Fehlern auf die Schliche zu kommen. z.B. in diesem Code sollte der Sender lieber ein TEdit sein:
Delphi-Quellcode:
Grundsätzlich sollte es keine Probleme machen, aber angenommen du hast dich einmal verklickt im OI und ein Button hat nun auch die Methode zugewiesen bekommen. Durch den harten TypeCast TEdit() wird keine Überprüfung vorher durchgeführt ob es wirklich ein TEdit ist (im Gegensatz zu As TEdit). Daher kann der Code leicht ins Nirvana gehen bzw. am Button Einstellungen überschreiben.
Procedure TForm1.Edit1Change(Sender : Tobject);
Begin TEdit(Sender).Enabled := True; End; Bsp: Assertions:
Delphi-Quellcode:
Wenn du nun dein Programm startest und den Button mit der falschen Methode aufrufst, dann kommt eine Assert mit dem selbst definierten Text hoch - schlimmeres verhindert, du weisst wo du ansetzen musst und hast es ohne grossen Endtest und debugging schnell gefunden...
Procedure TForm1.Edit1Change(Sender : Tobject);
Begin Assert( Sender Is TEdit, 'Argh: Edit1Change(): Sender ist kein TEdit - wahrscheinlich falsch zugewiesen!'); TEdit(Sender).Enabled := True; End; MfG Muetze1 |
Re: Assertion
Merk' ich mir - könnte nützlich sein. ;)
|
Re: Assertion
|
Re: Assertion
Und der Gag an der ganzen Sache ist: Die Zeilennummer steht mit in der Messagebox von Assert. ;)
|
Re: Assertion
Aber wie geht das? Da muss der Compiler doch zur Compilezeit das ganze einfügen (Zeilennummer usw.)...
Wo ich bei VirtualDub draufgestoßen ist's ähnlich: wenn das Programm crasht, disassembliert es sich und gibt Zeilennummer und Art des Fehlers an. Aber wie geht das mit disassemblen zur Laufzeit und Co? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:23 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