Programmabsturz durch Benutzereingabe erzeugen

Für allgemeine Fragen zur Programmierung mit PureBasic.
SBond
Beiträge: 266
Registriert: 22.05.2013 20:35

Programmabsturz durch Benutzereingabe erzeugen

Beitrag von SBond »

Hi Leute,

das klingt ein wenig komisch, aber ich versuche eine kleine GUI zu erzeugen, die bei Eingabe von Sonderzeichen oder zu langen Namen abstürzt.
Wie stelle ich das am besten an? Ich möchte dies nutzen, um die Auswirkungen von Programmierfehlern zu demonstrieren. Kennt jemand so ein richtig groben Fehler, mit dem man einen Absturz provoziert? In C++ sind Programmierfehler wohl einfacher umzusetzen, als in PureBasic :D

Code: Alles auswählen

Procedure Button()
	MessageRequester("String",GetGadgetText(0))
	
; 	....hier soll ich abstürzen, wenn der Name länger als 15 Zeichen ist, oder sonderzeichen enthält...
EndProcedure

If OpenWindow(0, 0, 0, 322, 105, "lass mich Abstürzen", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  	StringGadget(0, 8,  10, 306, 20, "Name eingeben")
  	ButtonGadget(1,8,50,300,30,"ok")
  	BindGadgetEvent(1,@Button())
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
 EndIf
  
 

viele Grüße,
SBond
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Programmabsturz durch Benutzereingabe erzeugen

Beitrag von RSBasic »

Du willst einen Programmabsturz simulieren?
Z.B.: a/0
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
SBond
Beiträge: 266
Registriert: 22.05.2013 20:35

Re: Programmabsturz durch Benutzereingabe erzeugen

Beitrag von SBond »

danke dir :)


Hatte es probehalber mit Poke-Befehlen gelöst, aber manchmal will es nicht abstürzen:

Code: Alles auswählen

Procedure Button()
	*Puffer = AllocateMemory(15)
	PokeS(*Puffer, GetGadgetText(0))
EndProcedure

Aber Division durch Null ist auch ein guter klassiker ;)
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Programmabsturz durch Benutzereingabe erzeugen

Beitrag von RSBasic »

Wenn du einen ErrorHandler hast, kannst du auch RaiseError() benutzen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
SBond
Beiträge: 266
Registriert: 22.05.2013 20:35

Re: Programmabsturz durch Benutzereingabe erzeugen

Beitrag von SBond »

sehr gut

danke dir ;)
41 6c 73 6f 20 77 65 6e 6e 20 64 75 20 73 6f 20 76 69 65 6c 20 4c 61 6e 67 65 77 65 69 6c 65 20 68 61 73 74 2c 20 64 61 6e 6e 20 6b 61 6e 6e 73 74 20 64 75 20 61 75 63 68 20 67 6c 65 69 63 68 20 7a 75 20 6d 69 72 20 6b 6f 6d 6d 65 6e 20 75 6e 64 20 61 62 77 61 73 63 68 65 6e 2e

:D
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Programmabsturz durch Benutzereingabe erzeugen

Beitrag von RSBasic »

Oder mit WinAPI mit einer Meldung: http://www.rsbasic.de/aktualisierung/wi ... %BCrzen.pb
Oder:

Code: Alles auswählen

Procedure KillMe()
  Protected hProcess
  
  hProcess = OpenProcess_(#PROCESS_TERMINATE, #False, GetCurrentProcessId_())
  TerminateProcess_(hProcess, 1)
  
EndProcedure
Einfach diese Prozedur aufrufen, um das eigene Programm abzuschießen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten