Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CHM Datei einbinden (https://www.delphipraxis.net/83096-chm-datei-einbinden.html)

Sierra 27. Dez 2006 13:32


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.

pmoegenb 27. Dez 2006 13:58

Re: CHM Datei einbinden
 
Siehe http://www.helpscribble.com/delphi-bcb.html

Blackheart 27. Dez 2006 13:59

Re: CHM Datei einbinden
 
Binde die Datei als Resource in dein Programm ein.
Blackheart

Sierra 27. Dez 2006 19:42

Re: CHM Datei einbinden
 
Zitat:

Zitat von Blackheart
Binde die Datei als Resource in dein Programm ein.
Blackheart

Wie genau geht das denn?
Und wie kann ich dann auf die Datei zugreifen?

Vielen Dank.

Blackheart 27. Dez 2006 21:05

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;

Sierra 28. Dez 2006 09:08

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!

Sierra 28. Dez 2006 09:08

Re: CHM Datei einbinden
 
Die Delphi Hilfe war dabei nicht sehr hilfreich.

Blackheart 28. Dez 2006 09:17

Re: CHM Datei einbinden
 
Was funktioniert denn daran nicht, habs getestet.
Hast Du die Dateinamen entsprechend angepasst.

Robert Marquardt 28. Dez 2006 09:23

Re: CHM Datei einbinden
 
Man kann das .rc File auch einfach mit ins Projekt aufnehmen, dann wird es automatisch beim kompilieren mit verarbeitet.

Sierra 28. Dez 2006 14:15

Re: CHM Datei einbinden
 
Wenn ich es aber wie vorgeschlagen löse, wird dann die Hilfesatei in das Programm eingebunden?

Blackheart 28. Dez 2006 18:31

Re: CHM Datei einbinden
 
Zitat:

Zitat von Sierra
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!

Zitat:

Zitat von Sierra
Wenn ich es aber wie vorgeschlagen löse, wird dann die Hilfesatei in das Programm eingebunden?

Was soll die Frage, Ich denke Du hast es "probiert" siehe Oben - aber anscheinend nicht.
Zu 2. Ja

Luckie 28. Dez 2006 18:39

Re: CHM Datei einbinden
 
Was willst du genau?
  1. Die Hilfe in die Exe einbinden, so dass du nur eine Datei ausliefern musst und die Hilfedatei beim Start "ausgepackt" wird?
  2. Die Hilfedatei in das Programm einbinden, so dass sie mit F1 aufgerufen wird, ohne dass die die Hilfedatei mit MSDN-Library durchsuchenShellexecute ausführen musst?
Das scheint hier das Probem zu sein. Eine präzisere Problembeschreibung gleich im ersten Posting ist immer sehr hilfreich. ;)

Sierra 28. Dez 2006 19:05

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:

Die Hilfedatei in das Programm einbinden, so dass sie mit F1 aufgerufen wird, ohne dass die die Hilfedatei mit Shellexecute ausführen musst?
Wenn das so möglich ist, wäre das toll.

Blackheart 28. Dez 2006 19:24

Re: CHM Datei einbinden
 
Zitat:

Zitat von Sierra
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

Die Erstere Lösung hast Du mit F1 wäre auch nicht das Problem, warum nicht ShellExecute.
(Überhaupt schon mal was probiert)

Sierra 28. Dez 2006 19:49

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.

Blackheart 28. Dez 2006 20:13

Re: CHM Datei einbinden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Sierra
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.

Also, Ich mach Mir Dir Arbeit erkläre Dir die Sache inclusive Quelltext.
Probiers doch mal aus deine chm wird mit ins Prog eingebunden !!!
Kann Doch nicht so schwer sein.

Sierra 29. Dez 2006 11:53

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.

Sierra 29. Dez 2006 12:07

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.

Luckie 29. Dez 2006 12:08

Re: CHM Datei einbinden
 
Delphi-Referenz durchsuchenDeleteFile?

Reinhard Kern 29. Dez 2006 13:20

Re: CHM Datei einbinden
 
Zitat:

Zitat von Sierra
Eine letzte Frage noch, wie kann ich bei "Form1.Close" das Löschen der temporären Datei veranlassen?
Hat sich erledigt.

Hallo,

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

Sierra 29. Dez 2006 13:26

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.

Sierra 29. Dez 2006 13:26

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