Handhabung einer chm-Datei

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
dibro
Beiträge: 143
Registriert: 11.03.2006 12:52
Computerausstattung: Win 10 64 bit
Wohnort: Solingen

Beitrag 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 :evil:

Nachtrag:
Bei den Kompileroptionen hab ich nur XP-Skinunterstützung angeklickt, sonst nix, auch keine Include - vielleicht fehlt hier was ??
Gruß aus Solingen, PB 6.0 Win 10 Pro
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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 :freak:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

@ts-soft
Genau das denke ich auch. Oder er hat ein Event falsch gesetzt. Dann kommt auch ein Absturz :twisted:

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.
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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 :freak:

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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
dibro
Beiträge: 143
Registriert: 11.03.2006 12:52
Computerausstattung: Win 10 64 bit
Wohnort: Solingen

Beitrag 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 ?
Gruß aus Solingen, PB 6.0 Win 10 Pro
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag 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.
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
dibro
Beiträge: 143
Registriert: 11.03.2006 12:52
Computerausstattung: Win 10 64 bit
Wohnort: Solingen

Beitrag 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.
Gruß aus Solingen, PB 6.0 Win 10 Pro
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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).
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten