AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Assertion

Ein Thema von day · begonnen am 16. Jun 2004 · letzter Beitrag vom 7. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
day

Registriert seit: 10. Mai 2004
223 Beiträge
 
#1

Assertion

  Alt 16. Jun 2004, 00:08
Hallo

gibt es eingentlich die möglichkeit in Delphi Assertions zu verwenden?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Assertion

  Alt 16. Jun 2004, 00:17
Moin!

Klar, Assert() macht dieses. Benutze ich selber recht gerne...

MfG
Muetze1
  Mit Zitat antworten Zitat
day

Registriert seit: 10. Mai 2004
223 Beiträge
 
#3

Re: Assertion

  Alt 16. Jun 2004, 18:46
und wie kann man sie deaktivieren?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Assertion

  Alt 17. Jun 2004, 01:34
Moin!

Projekt->Optionen->Compiler->Assertions (C) abwählen und Programm neu erstellen...

MfG
Muetze1
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: Assertion

  Alt 17. Jun 2004, 07:17
Für was ist Assert() eigentlich gut?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Assertion

  Alt 17. Jun 2004, 09:54
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:
Procedure TForm1.Edit1Change(Sender : Tobject);
Begin
  TEdit(Sender).Enabled := True;
End;
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.

Bsp: Assertions:
Delphi-Quellcode:
Procedure TForm1.Edit1Change(Sender : Tobject);
Begin
  Assert( Sender Is TEdit, 'Argh: Edit1Change(): Sender ist kein TEdit - wahrscheinlich falsch zugewiesen!');

  TEdit(Sender).Enabled := True;
End;
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...

MfG
Muetze1
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#7

Re: Assertion

  Alt 17. Jun 2004, 11:34
Merk' ich mir - könnte nützlich sein.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#8

Re: Assertion

  Alt 17. Jun 2004, 11:38
Luckie hatte mal einen Thread zu diesem Thema gestartet.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Assertion

  Alt 17. Jun 2004, 12:09
Und der Gag an der ganzen Sache ist: Die Zeilennummer steht mit in der Messagebox von Assert.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#10

Re: Assertion

  Alt 17. Jun 2004, 12:31
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?
  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:41 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