TResult - einfache Überprüfung von Funktionen

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

 

Shaman

Betreff: TResult - einfache Überprüfung von Funktionen

BeitragMi, Jul 13, 2011 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
TResult ist eine Klasse, die ich geschrieben habe, um bei Funktionen, die häufig fehlschlagen,
zu überprüfen, was schief gelaufen ist.
(Etwas holprig, ich weiß)

Die Anregung dazu kam von C++ mit HRESULT von Windows-Funktionen.

Derzeit sind diese Rückgabewerte eingebaut:
OK, TIME_OUT, FAIL, ERROR, OUT_OF_BORDER

Dies kann jedoch leicht erweitert werden.

Der Code ist, wie alle meine (kommenden) Codes, für ein Modul ausgelegt,
und entsprechend für bbdoc kommentiert.

Code: [AUSKLAPPEN]

Rem
bbdoc: shaman\Result
about: Simple Result Typ

Initialised with Init()
EndRem
Module shaman.Result

Rem
bbdoc: Used to define a Result
about: Example: <br><br>
Function Test:TResult() <br>
   Return TResult.OK <br>
end function <br>
If Test()=TResult.OK then Print "OK"
EndRem
Type TResult
   Rem
   bbdoc: Shows "OK"
   EndRem
   Global OK:TResult
   
   Rem
   bbdoc: Shows "Time out"
   EndRem
   Global TIME_OUT:TResult
   
   Rem
   bbdoc: Shows "Fail"
   EndRem
   Global FAIL:TResult
   
   Rem
   bbdoc: Shows "Error"
   EndRem
   Global ERROR:TResult
   
   Rem
   bbdoc: Shows "Out of Border"
   EndRem
   Global OUT_OF_BORDER:TResult
   
   Field name:String
   Method ToString:String()
      Return Self.name
   End Method
   
   Rem
   bbdoc: Initialize The Result System
   End Rem
   Function Init()
      TResult.OK=New TResult
      TResult.OK.name="OK"
      
      TResult.TIME_OUT=New TResult
      TResult.TIME_OUT.name="Time out"
      
      TResult.FAIL=New TResult
      TResult.FAIL.name="Fail"
      
      TResult.ERROR=New TResult
      TResult.ERROR.name="Error"
      
      TResult.OUT_OF_BORDER=New TResult
      TResult.OUT_OF_BORDER.name="Out of Border"
   End Function
End Type


Ein Beispiel:

Code: [AUSKLAPPEN]

Import shaman.Result

TResult.Init()

If TestFunc("blab")=TResult.OK Then
   Print "Success"
Else
   Print "Error"
Endif

If TestFunc("")=TResult.OK Then
   Print "Success"
Else
   Print "Error"
Endif

End

Function TestFunc:TResult(text:String)
   If text=null Or text="" Then Return TResult.ERROR
   Print text
   Return TResult.OK
End Function
 

Macintosh

BeitragMi, Jul 13, 2011 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
So etwas ürde ich dann doch eher über einen integer rückgabewert lösen.
Oder bei methoden exceptions schmeißen.
 

Shaman

BeitragDo, Jul 14, 2011 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habs haptsächlich zur vereinheitlichung von meinen Modulen gemacht.
Exceptions wollte ich nicht benutzten, weil ich es umständlich finde jeden Befehl in einen Try-Catch Block zu packen.
Aber danke für deine Bewertung

FireballFlame

BeitragSo, Jul 17, 2011 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzMax: [AUSKLAPPEN]
If TestFunc("blab")=TResult.OK Then
Print "Success"
Else
Print "Error"
EndIf

BlitzMax: [AUSKLAPPEN]
Try
TestFunc "blab"
Print "Success"
Catch Exception:TBlabException
Print "Error"
End Try

Umständlicher finde ich das nicht.
Und genau dazu sind Exceptions da Wink
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group