Kritik zu FAQ: Tasten systemweit abfangen
-
Jein!
Wäre besser, ja.
Ich meine woher willst du wissen das eine Exception besser wäre, als eine MessageBox, wenn du dich garnicht mit Exceptions auskennst?
-
Standardantwort: C++ Tut lesen.
Oder einfach mal in der Hilfe unter Exception, da is sogar ein Beispiel.
BTW: Hast du heute eigentlich auch noch andere Hobbies als das Forum? *g*
[ Dieser Beitrag wurde am 15.01.2003 um 19:06 Uhr von Eßer editiert. ]
-
Nö. Damit will ich mich garnicht auskennen!
-
Wobei... <Probenking> hat eigentlich recht. Eine Exception macht ja auch nix anderes als ne MessageBox auszugeben.
-
Nö. Das macht der BCB mit der Exception, wenn er sie abfängt. Wenn der Benutzer das jetzt nciht will, fängt er sie einfach selbst vorher ab. Mit deiner MessageBox-Version ist das so nicht möglich.
-
Original erstellt von Eßer:
Wenn der Benutzer das jetzt nciht will, fängt er sie einfach selbst vorher ab.Hä? Wie das? Benutzer == Programmierer oder Benutzer == DAU?
-
ACH, HIER IST JA ALLES TOTAL DURCHEINANDER!!!
-
Der Progger, der die Dll benutzt natürlich.
-
Wenn der Benutzer das jetzt nciht will, fängt er sie einfach selbst vorher ab.
Nochmal: wie?
-
Try/catch?!
-
Ja toll. Und was steht dann im catch-Block? Ich meine, was soll das? Der User muss ja irgendwie mitkriegen, dass das mit dem Hook nicht geklappt hat. Wenn man nun die MessageBox übergeht, was dann...?
-
class HookCreateException {}; if(!ghhookKB) throw HookCreateException; ... try { SetHook(); } catch(HookCreateException& hce) { MessageBox(NULL, "Hook kann nicht erstellt werden", "ERROR", MB_OK|MB_ICONERROR); }
-
Wenn der Benutzer (der Dll ;)) das so will lässt er z.B. nen Sound Abspeilen oder sonst was. Da muss der sich dann Gedanken drüber machen. Das Exception Handling ist IMHO jedenfalls keine Aufgabe des Entwicklers der Dll.
-
Ich verstehe noch nicht so ganz den Sinn des Ganzen. Ich finde das mit den MessageBoxes OK. Wenn man nun abfangen will, dass durch 0 geteilt wurde oder so, dann sind Exceptions wohl unumgänglich. Aber hier...
@<Der gute gerner>: Danke.
-
Es geht mir darum: Vielleicht will der Benutzer ja gar nicht, dass ne MessageBox ausgegeben wird.
Und: Wenn du ne Exception vom Typ Exception wirfst, wird standardmäßig (vom BCB) ne MessageBox ausgegeben. Der Benutzer muss sich also um nix kümmern, wenn er nicht will. Ist also praktisch idiotensicher.
Trotzdem mein Tipp: Setz dich mal mit Exceptions auseinander. Die können, wie du hier siehst manchmal ganz nützlich sein.
-
Ne, sehe ich nicht. OK, sagen wir, wir haben jetzt eine Exception benutzt, und zwei User benutzen die DLL. Der eine will die MessageBox, der andere nicht. Was haben jetzt beide zu tun?
-
Sag wir mal so: Der User kann selbst entscheiden wie der Fehler behandelt wird. Der eine gibt einfach ne MessageBox aus, der andere ignoriert (der Dumme :D) und noch ein anderer will ne Ausgabe in der Konsole machen.
-
WIE DENN, wenn die User NUR die DLL haben, also keinen Code?
-
hä??? sagen wir mal deine dll stellt die funktion SetHook bereit. dann kannst der benutzer dieser funktion die exception so abfangen wie es gerner bereits gesagt hat.
try { SetHook(); } catch(HookCreateException& hce) { // Hier entscheide ich was gemacht wird, und nicht du. :p }
-
Aber wie gesagt, wirf lieber ne Exception vom Typ Exception (oder nem Erben davon). Dann muss derjenige, der ne MessageBox haben will, garnix machen.
Derjenige, der keine haben will, fängt die Exception einfach selbst ab.