Seite 1 von 1

Assert() Function

Verfasst: 10.02.2005 03:27
von FloHimself
The assert function checks whether its first argument is not false and simply returns that argument.
http://rzserv2.fhnon.de/~lg016586/downl ... Assert.zip

Verfasst: 10.02.2005 09:47
von Dostej
Hm, also ehrlich gesagt versteh ich das nciht ganz. Kannst Du ein Codebeispiel posten? Oder ne kleine Hilfedatei zu deiner Lib machen?

Verfasst: 10.02.2005 15:29
von FloHimself
Die Assert Funktion ist etwas super simples. Sie überprüft den (ersten) übergebenen Parameter und gibt diesen als Rückgabewert wieder. Ist der Wert 0 (#False) wird eine Fehlermeldung (eine standard Meldung oder die im optionalen zweiten Parameter übergebene Mitteilung) im Debugger (und nur im Debugger!) angezeigt.

Wie gesagt, eine sehr einfache Funktion, aber in größeren Projekten war sie sehr hilfreich, zB bei der Suche nach NULL Pointern.

Beispiel:

Code: Alles auswählen

*MyPtr = Assert(GimmeAPointer(), "w00t a NULL Pointer?")
Im Debug Modus wird also der Rückgabewert der Funktion GimmeAPointer() an Assert() übergeben und geprüft ob dieser 0 ist. Ist er das, stoppt der Debugger mit Fehlermeldung. Ist der Rückgabewert von GimmeAPointer() <> 0, wird dieser über die Assert() Funktion zurückgegeben. Bei deaktivierten Debugger gibt Assert immer den übergebenen Wert zurück.

Verfasst: 10.02.2005 16:22
von freedimension
*doh*, das mach ich schon Jahr und Tag mit Datenbankabfragen in PHP so, aber auf die Idee das auch in PB so zu machen bin ich natürlich nicht gekommen :(

Flo: :allright:

Man sollte Fred vorschlagen das in die OnError- oder Misc-Library aufzunehmen, am Besten mit mehreren optionalen Parametern mit denen man noch näher bestimmen kann, wo der ungültige Zahlenbereich liegt (ist ja nicht immer 0).

Verfasst: 10.02.2005 16:30
von bluejoke
Sozusagen Definitionsmenge oder wie?

Verfasst: 10.02.2005 16:36
von freedimension
Jupp, genau.


Weitere Gedanken dazu:

- Keine Funktion, sondern ein Schlüsselwort. Dieses stellt die Funktionalität beim Debuggen zur Verfügung, wird aber in der Final ignoriert, d.h. nur die zu testende Funktion wird aufgerufen. Vorteil: mehr Geschwindigkeit, kleinere EXE.