Hilfe in Programm-Datei einbinden

Für allgemeine Fragen zur Programmierung mit PureBasic.
TKRoth
Beiträge: 32
Registriert: 24.02.2012 15:34
Wohnort: Hamburg
Kontaktdaten:

Hilfe in Programm-Datei einbinden

Beitrag von TKRoth »

Hallöchen mal wieder :oops:

Ich bin ein Fan von 'all in one' Programmen. Also alle nötigen Dateien sind in der Programmdatei enthalten. Bei Grafiken, Sounds etc. ist dies ja leicht möglich. CatchImage() etc. Ich würde aber auch gerne die Hilfe-Datei einbinden. Leider hat PB nicht so etwas in der Form wie:

Code: Alles auswählen

CatchHelpFile(#HelpID,?HelpFile)
...
...
OpenHelpTopic(#HelpID,"Index.html")
...
...
HelpFile: IncludeBinary "HelpFile.chm"
Gibt es dennoch eine Möglichkeit?
Computer werden benötigt um Probleme zu lösen die man ohne Computer nicht hätte.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Hilfe in Programm-Datei einbinden

Beitrag von RSBasic »

@TKRoth
Ich würde einfach mal vorschlagen, die includierte CHM-Datei beim Starten im Temp-Ordner zu extrahieren und anschließend diese mit OpenHelp() zu öffnen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
TKRoth
Beiträge: 32
Registriert: 24.02.2012 15:34
Wohnort: Hamburg
Kontaktdaten:

Re: Hilfe in Programm-Datei einbinden

Beitrag von TKRoth »

Das wäre zumindest eine Alternative, falls es nicht direkt in der Programmdatei gehen sollte. Vielleicht weiß ja jemand dennoch noch eine andere Lösung. Danke auf jeden Fall für den Tipp.

PS: Wäre evtl. noch eine Idee an die Entwickler meine oben genannten Funktionen in zukünftiger Version einzubauen :mrgreen:
Computer werden benötigt um Probleme zu lösen die man ohne Computer nicht hätte.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Hilfe in Programm-Datei einbinden

Beitrag von RSBasic »

TKRoth hat geschrieben:PS: Wäre evtl. noch eine Idee an die Entwickler meine oben genannten Funktionen in zukünftiger Version einzubauen :mrgreen:
Am besten registrierst du dich im englischen Forum und erstellst dort einen Thread.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
computerfreak
Beiträge: 112
Registriert: 23.07.2012 19:19

Re: Hilfe in Programm-Datei einbinden

Beitrag von computerfreak »

Hallo ,
also ich würde die chm-Datei in eine html Datei umwandeln (geht) , und den Html code einbinden

Code: Alles auswählen

html$+" platz für den code "+chr(10) ; chr(10) wird nicht unbedingt benötigt
html$+" platz für mehr code "+chr(10)
html$+" platz für mehr code "+chr(10)
[...]

WebGadget(#Web,0,0,200,200,"about:"+html$)

Nur so `ne Idee
PureBasic: Immer das neueste
Windows 8.1 / AMD FX 6100 / R9280X / 8GB RAM
Macbook Pro 2015 Retina
Dell Inspiron 1720 mit Linux Mint
...Und diverse Kleinstcomputer
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

Re: Hilfe in Programm-Datei einbinden

Beitrag von ts-soft »

HTML-Code als Resource einbinden und im WebGadget anzeigen!

Code: Alles auswählen

WebGadget(#webGadget, 0, 0, 100, 100, "res://" + ProgramFilename() + "/index.html") 
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

Re: Hilfe in Programm-Datei einbinden

Beitrag von dibro »

Hi,
das mit derm HTML-Code erscheint mir zu umständlich
Ich habe auch einige Zeit an dem Prob geknabbert und es jetzt wie folgt gelöst:

Code: Alles auswählen

; Hilfedatei in den EXE-Code einbinden

; Die Hilfedatei muss sich beim Compilieren im PB-Verzeichnis befinden
; Beim ersten Programmstart wird sie dann in das Verzeichnis geschrieben, in welchem die EXE läuft
; Die Hilfe wird dann im Prog ganz normal mit OpenHelp("NameDerHilfe.chm","") gestartet

If  ReadFile(1,"NameDerHilfe.chm") ;Hilfedatei bereits vorhanden
    CloseFile(1)
Else
    CreateFile(1,"NameDerHilfe.chm") ; Nicht vorhanden, neu anlegen
    WriteData(1,?HilfeAnfang,?HilfeEnde-?HilfeAnfang)
    CloseFile(1)
EndIf

DataSection
HilfeAnfang:
IncludeBinary "NameDerHilfe.chm"
HilfeEnde:
EndDataSection
PS. Meine Daten muss ich noch ändern, mittlerweile PB 5.0 Win 8 Pro 64 bit
Gruß aus Solingen, PB 6.0 Win 10 Pro
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Hilfe in Programm-Datei einbinden

Beitrag von NicTheQuick »

Falls du dein Programm aus dem Programmordner von Windows starten willst, wird das so nicht funktionieren, weil ein Programm normalerweise keine Adminrechte hat. Deswegen solltest du die Hilfe dann entweder im Anwendungsdaten-Verzeichnis erstellen oder wie schon erwähnt im temporären Verzeichnis.
Übrigens kann man mit 'FileSize("datei") >= 0' überprüfen, ob eine Datei bereits existiert. 'ReadFile()' und danach 'CloseFile()' ist also umständlicher.

Du kannst übrigens auch in den Compiler-Optionen einstellen, wo dein Kompilat erzeugt werden soll und normalerweise werde aus dem selben Verzeichnis dann auch die Dateien genommen, die du mit 'IncludeBinary' und ähnlichem einfügst. Die Alternative wäre direkt ein komplettes Projekt zu erstellen. Ist ja sonst umständlich erst die Datei(en) in das PB-Compilerverzeichnis zu verfrachten.
Benutzeravatar
dibro
Beiträge: 143
Registriert: 11.03.2006 12:52
Computerausstattung: Win 10 64 bit
Wohnort: Solingen

Re: Hilfe in Programm-Datei einbinden

Beitrag von dibro »

Übrigens kann man mit 'FileSize("datei") >= 0' überprüfen, ob eine Datei bereits existiert.
Danke für den Tip, muss ich noch versuchen.

Ich habe das Prog bisher in mehreren Ordnern un auf einem Stick probiert, bisher klappt alles.
Mir geht es um eine Stand alone Datei, sozusagen to go, die ich ohne Installation überall hin kopieren kann und die dann dort läuft.
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

Re: Hilfe in Programm-Datei einbinden

Beitrag von ts-soft »

dibro hat geschrieben:die ich ohne Installation überall hin kopieren kann und die dann dort läuft.
Das ist ja jetzt nicht gegeben, es sei denn Du nutzt doch den Tempordner. Mag sein, das Du
zu Hause ein so unsicheres XP mit Admin-Account nutzt, aber das wirste immer seltener antreffen.

Ist natürlich nur wichtig, wenn es auch woanders laufen soll.

Gruß
Thomas
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