Autor Beitrag
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 429
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: So 18.03.12 15:26 
Es taucht immer wieder das Problem auf daß CHM-Dateien die auf einer Netzwerkfreigabe liegen nicht oder nicht korrekt angezeigt werden können aufgrund von Sicherheitsbestimmungen für diesen Dateityp.
Es gibt viele Anleitungen im Netz wie man das dennoch bewerkstelligen kann, für den normalen User ist dies jedoch zu umständlich und auch Admins sind nicht begeistert wenn das ganze für eine größere Anzahl von Workstations durchgeführt werden muss.

Ich fand folgende Lösung die für meine Zwecke ausreichend ist und m.E. nach auch recht komfortabel:

# Wenn die Hilfe in einer separaten CHM-Datei vorliegt (ist meist so) prüft das Programm beim Start, ob diese per Netzwerkfreigabe erreicht wird.
- Wenn nein ist nichts weiter zu tun.
- Wenn doch: Kopiere diese Datei in ein lokales Temp-Verzeichnis und verwende sie von dort. Dann treten keine Sicherheitsprobleme auf.
Zur Optimierung wird die Datei nur kopiert wenn sie noch nicht im lokalen Verzeichnis ist bzw. dort ein anderes Datum bzw. eine andere Größe aufweist

# Weiterhin kann die Hilfedatei mittels Resource zum Programm hinzugelinkt werden. Für diesen Fall arbeitet die Unit wie folgt:
- Kopiere den Inhalt der Resource in eine Datei im lokalen Temp-Verzeichnis unter vorgegebenem Namen und verwende diese dann von dort.
Zur Optimierung wird die Datei nur neu erzeugt wenn sie noch nicht im lokalen Verzeichnis ist bzw. dort eine andere Größe aufweist

Ein Tipp am Rande: CHM als Resource tauchte hier im Forum schon vereinzelt auf und es wurde besprochen wie das zu bewerkstelligen ist.
Die Verwendung von BRCC32 ist jedoch nicht erforderlich - wenn die .RC-Datei über "dem Projekt hinzufügen" aufgenommen wird erledigt die IDE automatisch die Übersetzung wenn erforderlich und erzeugt die RES-Datei.

* Die Unit wurde für Delphi6 erstellt, neuere Versionen arbeiten etwas abweichend, somit müßten Anpassungen erforderlich sein.
* Die Unit verwendet die Units hh.pas, hh_funcs der Helpware Group (www.helpware.net) sowie compilers_.inc und D60nHelpFix von Robert Chandler<robertc@Helpware.net>.

Eingebunden werden die Hilfefunktionen z.B. wie folgt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
uses HelpSystem;

....

initialization
// Falls Doku als Resource hinzugelinkt:
// InitHelpSystem ('Dokumentation.chm','DOKUMENTATION');

// Falls Doku als Datei vorliegt
 InitHelpSystem (<Pfad zur Datei>+'dokumentation.chm','');

finalization
 DoneHelpSystem;



Vielleicht hilft dieses Programmschnippsel anderen.

Andreas
Einloggen, um Attachments anzusehen!

Für diesen Beitrag haben gedankt: dummzeuch