Seite 2 von 3
Verfasst: 21.09.2006 18:52
von dibro
@Falko
Siehste, die Diskussion läuft an meinem Problem vorbei.
Ich widerhole nochmal:
Klicke ich zwischendurch auf X = close Window beim Helpfenster, stürzt PB ab.
Und zwar besonders wenn gleichzeitig in PB das Helpfenster offen ist. Dann gibt es undefinierbare Zustände. Wenn ich so einen Absturz hatte und dann das Proggy neu starte, dann reicht in der Abfrageschleife hinter case xy openhelp(..) um festzuklemmen ! - Seltsam (bei offener PB IDE und Hilfe).
Beim kompilierten Prog gehts beim ersten Mal.
Wiederhole ich den Vorgang (nochmal zur Verdeutlichung: Prog starten, Hilfe aufrufen, Hilfe über X beenden, Programm beenden --> hängt!), ist wieder alles Merde.
Ich habe am Ende nochmal CloseHelp() eingefügt, obwohl PB ja alle Fenster schließt.
Lasse ich die Hilfe geöffnet, läuft alles normal, ob mit oder ohne CloseHelp(), X beim Prog schließt alle Fenster. Ich kann aber nicht verhindern, dass der Anwender die Hilfe über X schließt und dann macht das Prog keinen guten Eindruck
Nachtrag:
Bei den Kompileroptionen hab ich nur XP-Skinunterstützung angeklickt, sonst nix, auch keine Include - vielleicht fehlt hier was ??
Verfasst: 21.09.2006 19:02
von Kaeru Gaman
teste das doch bitte man mit einer fertigen exe, also PB-IDE und vor allem PB-Help zu.
evtl tritt das problem eben wegen der nebenprozesse beim starten aus der IDE + Debugger auf.
Verfasst: 21.09.2006 19:05
von ts-soft
>> Siehste, die Diskussion läuft an meinem Problem vorbei.
Dein Windows ist kaputt. Es geht bei allen, ausser bei deinen 5 PCs, aber die
Diskussion wahr doch schon. Da kann Dir keiner helfen

Verfasst: 21.09.2006 19:16
von Falko
@ts-soft
Genau das denke ich auch. Oder er hat ein Event falsch gesetzt. Dann kommt auch ein Absturz
Hier mal ein falsches Beispiel mit dem vorrigen Code:
Code: Alles auswählen
OpenWindow(0,#PB_Ignore,#PB_Ignore,300,300,"Ausgabe zur Hilfe")
OpenHelp("MVCOM.chm","ComOpen.html")
Repeat
; event=WaitWindowEvent() ; hier mein Fehler weil ich diese Zeile zuviel ausgeklammert habe!!
; Select event
; Case #PB_Event_CloseWindow ; prüft ob das Schließfelt geschlossen
; CloseHelp()
; EndSelect
Until event=#PB_Event_CloseWindow ; Programmende
Das event nach dem Until wird jetzt durch das entkommentieren nicht mehr ausgewertet. Schliesse ich jetzt die Hilfe im X-Closer, danach muss ich noch das Fenster schliessen, dann meldet sich Dr. Whatson.
Wäre schöner, wenn er uns ein Beispielsource liefern würde.
Verfasst: 21.09.2006 19:23
von ts-soft
Bei mir geht alles, wenn Fenster geschlossen wird, geht die Hilfe auch zu,
wenn die Hilfe geschlossen wird, stürzt nichts ab. Bei sowas kann man doch
keine Fehler machen
Code: Alles auswählen
If OpenWindow(0, #PB_Ignore, 0, 200, 200, "")
OpenHelp(#PB_Compiler_Home + "purebasic.chm", "")
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Verfasst: 21.09.2006 19:50
von dibro
Ich habe mal das 2D_Drawing-Beispiel mit dem Hilfeaufruf verbunden:
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; PureBasic - 2D Drawing example file
;
; (c) 2003 - Fantaisie Software
;
; ------------------------------------------------------------
;
If OpenWindow(0, 100, 200, 300, 200, "2D Drawing Test",#PB_Window_SystemMenu)
; Create an offscreen image, with a green circle in it.
; It will be displayed later
;
AddKeyboardShortcut(0,#PB_Shortcut_F1,1)
If CreateImage(1, 100, 100)
If StartDrawing(ImageOutput(1))
FrontColor(RGB(128,0,128)) ; Purple..
Circle(50, 50, 10)
Box(0,20,20,20, RGB(210,210,210)) ; and a green box
Box(80,20,20,20, RGB(210,210,210))
StopDrawing()
EndIf
EndIf
;
; This is the 'event loop'. All the user actions are processed here.
; It's very easy to understand: when an action occurs, the EventID
; isn't 0 and we just have to see what have happened...
;
Repeat
;Repeat
EventID.l = WaitWindowEvent()
;Until EventID <> 0
If EventID = #PB_Event_Repaint ; If the user has resized the window or anything, we will repaint our graphic
Gosub SomeGraphics
EndIf
If EventID = #PB_Event_Menu
If EventMenu() =1
OpenHelp("..\..\PureBasic.chm","")
EndIf
EndIf
Until EventID = #PB_Event_CloseWindow ; If the user has pressed on the close button
EndIf
End ; All the opened windows are closed automatically by PureBasic
;
; Some 2D graphics functions...
;
SomeGraphics:
StartDrawing(WindowOutput(0))
Circle(50,100,50,RGB(0,0,255)) ; a nice blue circle...
Box(150,20,20,20, RGB(0,255,0)) ; and a green box
FrontColor(RGB(255,0,0)) ; Finally, red lines..
For k=0 To 20
LineXY(10,10+k*8,200, 0)
Next
; Locate(10, 10)
BackColor(RGB(0,155,155)) ; Change the text back and front colour
FrontColor(RGB(0,0,0))
;DrawText("Hello, this is a test")
DrawingMode(1)
; Locate(10, 50)
DrawText(10,10,"Hello, this is a second test")
DrawImage(ImageID(1), 100, 100) ; Display our image !
StopDrawing() ; This is absolutely needed when the drawing operations are finished !!! Never forget it !
Return
Das macht bei mir auch den Absturz. Was ist denn da falsch ?
Verfasst: 21.09.2006 20:00
von ts-soft
Nichts, Dein Windows ist nicht in Ordnung. Wenns mehrere Computer sind,
mal die Gemeinsamkeiten ermitteln, also vor allem installierte Programme
und Windows-Updates. HTMLHelpworkshop gibts z.B. eine kaputte Version für
W2k, hat M$ zwar schon lange ausgetauscht, vielleicht haste die irgendwo auf
CD. Es gibt tausende Möglichkeiten, aber PB wirds wahrscheinlich nicht sein.
Verfasst: 21.09.2006 20:34
von Falko
An dem PB-Prog ist nichts falsch.
Genau, wie ts-soft sagt, es muss am Windows liegen.
Obwohl dann dürfte der gleiche Fehler aber auch direkt in der PB-IDE passieren, wenn man dort F1 aufruft und dann das Hilfefenster wieder schließt.
Lad dir nochmal PB von deinem Accont herunter. Vielleicht ist dort noch eine Änderung der nachfolgenden patches eingeflossen.
Vorallem den alten PB-Ordner entfernen und PB4 erneut installieren.
Unter
http://www.purebasic.com/beta/ dürftest du evt. noch einige
patches zu PB4 finden, wenn du die zuvor noch ausprobiern möchtest.
Verfasst: 22.09.2006 13:36
von dibro
@Falko
Obwohl dann dürfte der gleiche Fehler aber auch direkt in der PB-IDE passieren, wenn man dort F1 aufruft und dann das Hilfefenster wieder schließt.
So ist es.
Und wenn ich neu gebootet habe und mein Proggy aufrufe ist alles ok (hab ich heute festgestellt).
Nur wenn gleichzeitig die jaPBe oder PB-IDE auf ist, tritt das auf, insbesondere wenn ich in der IDE kompiliere und nicht eine EXE aufrufe.. Im Taskmanager erscheint das eingefrorene Programm doppelt mit dem Vermerk keine Rückmeldung.
Ist wohl doch was bei PB. Ich hab die 4.0, habe das gleiche Problem aber schon bei 3.94 gehabt(hab ich auch noch drauf). Ich versuchs mal mit der letzten Version bzw. mit den Patches.
Danke für die Tipps.
Verfasst: 22.09.2006 13:47
von ts-soft
>> Im Taskmanager erscheint das eingefrorene Programm doppelt mit dem Vermerk keine Rückmeldung.
Da würde ich auf den Source oder Windows tippen. PB kanns IMHO auch hier
nicht sein. AntivirProgramm, welches dazwischen fuchtelt. Aber wir drehen
uns im Kreis.
Ähnliche Probleme, bei versch. Programmen hatte ich nur bei installierten
Norton (Symantec).