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:
@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.
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
Computer werden benötigt um Probleme zu lösen die man ohne Computer nicht hätte.
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
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.
; 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
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.
Ü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.
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.