AGB  ·  Datenschutz  ·  Impressum  







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

Fragen zu Assert

Ein Thema von Luckie · begonnen am 9. Dez 2003 · letzter Beitrag vom 10. Dez 2003
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Luckie
Luckie

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

Fragen zu Assert

  Alt 9. Dez 2003, 22:16
Ich bin jetzt in einem Code über Assert gestolpert. In meinem Buch steht dazu (frei übersetzt):
Zitat:
Benutzen sie Assert um Annahmen, die sie im Code treffen zu dokumentieren bzw. zu erwzingen.
Und weiter:
Zitat:
Man benutzt Assert, um bedingungen zu spezifizieren, die wahr sein müssen, damit der Code korrekt arbeitet.
Aber irgendwie kann ich mit der Erklärung nichts anfangen. Ein Beispiel wäre:
Assert(FileExists(Filename)); Aber was bringt das?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Fragen zu Assert

  Alt 9. Dez 2003, 22:28
Hallo Luckie,

Stichworte zu diesem Thema sind: Bei Google suchenDesign by Contract, Bei Google sucheninvariants, Bei Google suchenhow to use assertions, Bei Google suchenprecondition postcondition. Die Programmiersprache Eiffel biete die Zusicherung von Invarianten sogar direkt als Sprachkonstrukt Bei Google sucheneiffel invariants.
gruß, choose
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#3

Re: Fragen zu Assert

  Alt 9. Dez 2003, 22:30
Ich hab nur folgendes gefunden:

EAssertionFailed ist die Exception-Klasse. Sie wird aufgerufen, wenn an die Prozedur Assertion der bool'sche Ausdruck False übergeben wird.

Ich schätz mal dass du dann einfach ne Message bekommst...so ungefähr

Assert(Liste <> nil, 'Keine Einträge vorhanden'); Ob das nun dafür gedacht ist oder net... ka
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#4

Re: Fragen zu Assert

  Alt 9. Dez 2003, 22:30
Code:
Use Assert as a debugging tool to test that conditions assumed to be true are never violated. Assert provides an opportunity to intercept an unexpected condition and halt a program rather than allow execution to continue under unanticipated conditions.
Statt das irgenwo ne Exception rausgeworfen wird, sagt der dir, dass genau an der einen Stelle, wo du totsicher von true ausgingst, soch false rauskam. d.h. du solltest davor schaun, was schiefgelaufen ist. ist also wie gesagt zum debuggen gut. Beispiel:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  a: boolean;
begin
a := false;
assert(a);
IchGehFreiwilligInDieHoelle(not a);
end;
...so hab ich es verstanden...
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

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

Re: Fragen zu Assert

  Alt 9. Dez 2003, 22:32
Hi,

wir haben gerade noch folgenden Link aufgegabelt und der dokumentiert das sehr schön:
http://www.idev.ch/index.php?option=...tid=4&Itemid=3

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

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: Fragen zu Assert

  Alt 9. Dez 2003, 22:38
Der große Vorteil von Asserts ist das sie per Compilerschalter deaktivierbar sind. D.h. während der Programmierung arbeitet man mit Assert(FileExists(), 'Datei nicht vorhanden'); und wenn alles ordentlich funktioniert wird im Productioncode ohne DebugInfo und Assertitions recompiliert. Der Compiler erzeugt dann keinerleit Code mehr für die Asserts.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#7

Re: Fragen zu Assert

  Alt 9. Dez 2003, 22:39
Ich hab noch diesen Link gefunden, verweist allerdings auf ein Word Dokument:
http://mitglied.lycos.de/AJSchmidt/D...ehlersuche.doc

Geht auch wieder um die Fehlersuche mit Assert
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Fragen zu Assert

  Alt 9. Dez 2003, 22:45
Also, ich habe mal etwas rumgespielt und getestet. Betrachten wir mal folgenden Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Assert(FileExists('c:\test.txt'), 'Datei gibbet nitt');
end;
Mit der Annahme dass es diese Datei nicht gibt. Dann bricht Assert den Programmablauf ab und gibt eine Fehlermeldung aus. Das könnte man jetzt auch mit if's und try-excepts lösen. Aber der Unterschied ist der:
Zitat:
---------------------------
Project1
---------------------------
Datei gibbet nitt (D:\Programmierung\Delphi\Programme\Unit1.pas, Zeile 29)
---------------------------
OK
---------------------------
Diese Meldung erscheint, wenn man die Exe aus dem Explorer startet. Das bemerkenswerte ist, dass auch die Unit und die Zeile in der der Fehler auftrat bzw. die Annahme nicht korrekt war ausgegeben wird. Für den Endbenutzer eine nicht sehr Hilfreiche Fehlermeldung, dafür aber für den Entwickler um so hilfreicher.

Fazit: In Testversionen kann ein Assert für den Entwickler hilfreicher sein, als eine normale Fehlermeldung genriert durch eine Exception oder eine Messagebox in einem else-Zweig einer if-Bedingung.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Fragen zu Assert

  Alt 9. Dez 2003, 22:48
Zitat von negaH:
Der große Vorteil von Asserts ist das sie per Compilerschalter deaktivierbar sind. D.h. während der Programmierung arbeitet man mit Assert(FileExists(), 'Datei nicht vorhanden'); und wenn alles ordentlich funktioniert wird im Productioncode ohne DebugInfo und Assertitions recompiliert. Der Compiler erzeugt dann keinerleit Code mehr für die Asserts.
Ja, genau da sahbe ich auch gerade rausgefunden. Werde ich in den nächsten Projekten mal versuchen zu nutzen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#10

Re: Fragen zu Assert

  Alt 9. Dez 2003, 22:48
Zitat von Luckie:
Diese Meldung erscheint, wenn man die Exe aus dem Explorer startet. Das bemerkenswerte ist, dass auch die Unit und die Zeile in der der Fehler auftrat bzw. die Annahme nicht korrekt war ausgegeben wird.
Das ist mir noch garnicht aufgefallen. Das ist in der Tat sehr hilfreich!
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 15:43 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