CHM Datei einbinden
Hi!
Ich habe mich zwar schon hier im Forum umgesehen, aber ich habe leider nicht genau die passende Antwort auf meine Frage gefunden. Es geht darum, eine CHM Datei in ein Delphi Programm einzubinden. Die Hilfe will ich dann über ein Menü aufrufen lassen können (also ganz klassisch). Wie realisiere ich es nun, dass ich nicht z.B. über die ShellAPI die Datei öffnen muss, sondern, dass die CHM Datei immer praktisch bei dem Programm dabei ist (also integriert). Das soll dem Zweck dienen, dass sich so die CHM Datei an einem ganz anderen Ort befinden kann (bzw. dann ja an gar keinem) und es trotzdem funktioniert. Vielen Dank. |
Re: CHM Datei einbinden
|
Re: CHM Datei einbinden
Binde die Datei als Resource in dein Programm ein.
Blackheart |
Re: CHM Datei einbinden
Zitat:
Und wie kann ich dann auf die Datei zugreifen? Vielen Dank. |
Re: CHM Datei einbinden
Zu 1.
Speichere deine chm Datei in deinem Projektordner. Dann nimmst Du Dir einen Text Editor und gibst folgendes ein ReadMe RCDATA "ReadMe.chm" Diese Datei speicherst Du ab als ReadMe.rc in deinem Projektordner. Dann suche in Borland nach der Brcc32.exe liegt meistens im Bin Verzeichnis. Kopiere die Exe und schiebe Sie in deinen Projektordner. Dann Schiebe die ReadMe.rc Datei per Drag & Drop auf die Brcc32.exe Dadurch wird eine ReadMe.res Datei erzeugt. Dann binde unten stehenden Code in dein Projekt ein. Nicht vergessen die Resource einzubinden {$S ReadMe.res}
Delphi-Quellcode:
implementation
{$R *.dfm} {$R ReadMe.res}//Nicht vergessen procedure TForm1.Button1Click(Sender: TObject); var ResStream: TResourceStream; begin ResStream := TResourceStream.Create(hInstance, 'ReadMe', RT_RCDATA); if not FileExists(ExtractFilePath(ParamStr(0)) + 'temp.chm') then ResStream.SaveToFile(ExtractFilePath(ParamStr(0)) + 'temp.chm'); if fileexists(ExtractFilePath(ParamStr(0)) + 'temp.chm') then ShellExecute(Handle, 'open', PChar(ExtractFilePath(ParamStr(0)) + 'temp.chm') , nil, nil, SW_SHOWNORMAl) else ShowMessage('Hilfedatei konnte nicht geladen werden !'); ResStream.Free; end; |
Re: CHM Datei einbinden
Vielen Dank!
Leider funktioniert das so nicht. Ich habe jetzt mal ein bisschen in den Einstellungen von Delphi rumgesucht und habe eine Option gefunden, in der man eine Hilfedatei definieren kann. Was hat es damit auf sich? Vielen Dank! |
Re: CHM Datei einbinden
Die Delphi Hilfe war dabei nicht sehr hilfreich.
|
Re: CHM Datei einbinden
Was funktioniert denn daran nicht, habs getestet.
Hast Du die Dateinamen entsprechend angepasst. |
Re: CHM Datei einbinden
Man kann das .rc File auch einfach mit ins Projekt aufnehmen, dann wird es automatisch beim kompilieren mit verarbeitet.
|
Re: CHM Datei einbinden
Wenn ich es aber wie vorgeschlagen löse, wird dann die Hilfesatei in das Programm eingebunden?
|
Re: CHM Datei einbinden
Zitat:
Zitat:
Zu 2. Ja |
Re: CHM Datei einbinden
Was willst du genau?
|
Re: CHM Datei einbinden
Ich möchte einfach nur irgendwie die CHM Datei in die EXE integrieren, sodass man, egal wo die Hilfedatei liegt, die Hilfedatei öffnen kann.
Außerdem sollte es keine Rolle spielen, wo die EXE liegt. Zitat:
|
Re: CHM Datei einbinden
Zitat:
(Überhaupt schon mal was probiert) |
Re: CHM Datei einbinden
Ja, ich habe schonmal was probiert.
SheeExecute deshalb nicht, weil dann die Hilfedatei in irgendeinem bestimmten Ordner schon vorhanden sein muss (oder?). Also ich lasse mich ja gerne eines Besseren belehren. |
Re: CHM Datei einbinden
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Probiers doch mal aus deine chm wird mit ins Prog eingebunden !!! Kann Doch nicht so schwer sein. |
Re: CHM Datei einbinden
Vielen, vielen , vielen Dank an Blackheart und die anderen.
Sorry, ich glaube ich hatte ein Brett vor dem Kopf. Ich habe deine Methode ausprobiert, aber irgendwo hatte ich anscheinend einen Rechtschreibfehler oder ähnliches, weshalb es nicht funktionieren wollte. Bitte nicht böse sein. Vielen Dank. |
Re: CHM Datei einbinden
Eine letzte Frage noch, wie kann ich bei "Form1.Close" das Löschen der temporären Datei veranlassen?
Hat sich erledigt. |
Re: CHM Datei einbinden
|
Re: CHM Datei einbinden
Zitat:
ist das wirklich eine so gute Idee? Ich würde die Datei sinnvoll benennen und stehen lassen, dann muss sie nur bei der ersten Benutzung erstellt werden. Wenn du sie nach Gebrauch löschst, muss die Hilfedatei bei jedem Aufruf neu aus der Exe extrahiert und auf die Platte geschrieben werden. Gruss Reinhard |
Re: CHM Datei einbinden
Ja, es hat sicherlich beides Vor- und Nachteile.
Aber ich denke es ist besser, wenn man die EXE verschieben sollte nicht irgendwo noch "Dateileichen" zu haben. |
Re: CHM Datei einbinden
Außerdem dauert das Erstellen nicht lange.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz