AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Hilfedatei temporär erstellen und wieder löschen
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfedatei temporär erstellen und wieder löschen

Ein Thema von DevidEspenschied · begonnen am 6. Jun 2014 · letzter Beitrag vom 8. Jun 2014
Antwort Antwort
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#1

Hilfedatei temporär erstellen und wieder löschen

  Alt 6. Jun 2014, 21:34
Hallo,

während meiner Programminitialisierung erstelle ich eine relativ kleine Hilfedatei im temporären Verzeichnis (Umgebungsvariable TEMP) und weise den Pfad zu Application.Helpfile zu. Das funktioniert soweit ganz gut.

Kurz vor dem Programmende lösche ich diese Datei wieder mittels DeleteFile, das funktioniert auch. Allerdings funktioniert es nicht, wenn ich die Hilfedatei mindestens einmal in der Applikation angezeigt habe, also der Anwender min. einmal F1 gedrückt hat. Ich vermute, die Applikation öffnet die Datei dann und schließt sie irgendwann zum Ende, so dass mein Löschvorgang auf die Datei nicht wirken kann.

Was kann man da tun?
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
297 Beiträge
 
Delphi 12 Athens
 
#2

AW: Hilfedatei temporär erstellen und wieder löschen

  Alt 6. Jun 2014, 22:23
Wahrscheinlich mußt Du die Hilfedatei mit Application.HelpCommand(HELP_QUIT, 0) vor dem löschen schließen.
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#3

AW: Hilfedatei temporär erstellen und wieder löschen

  Alt 6. Jun 2014, 22:30
Die Hilfe, wenn sie denn offen ist, wird durch den Befehl geschlossen. Der anschließende Löschvorgang scheitert aber trotzdem...
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Hilfedatei temporär erstellen und wieder löschen

  Alt 6. Jun 2014, 22:34
Zitat von Die OH sagt ...:
Before closing the window that requested help, the application must call WinHelp with the uCommand parameter set to HELP_QUIT. Until all applications have done this, Windows Help will not terminate. Note that calling Windows Help with the HELP_QUIT command is not necessary if you used the HELP_CONTEXTPOPUP command to start Windows Help.

Wie erstellst du denn die Datei?

Wenn man dafür FILE_ATTRIBUTE_TEMPORARY (MSDN-Library durchsuchenCreateFile) verwendet, dann löscht Windows die Datei automatisch, selbst wenn dein Progamm abstürzt.
In wie weit FILE_FLAG_DELETE_ON_CLOSE helfen könnte, kann ich jetzt nicht sagen.



Alternativ gäbe es auch andere Hilfesysteme, als diese HLP-Dateien.

Warum erstellst du diese Datei eigentlich erst zur Laufzeit?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 6. Jun 2014 um 22:37 Uhr)
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#5

AW: Hilfedatei temporär erstellen und wieder löschen

  Alt 6. Jun 2014, 22:49
Ich erstelle die Datei zur Laufzeit, weil ich sie dabei haben möchte, dem Kunden aber keine zusätzliche Datei mitgeben möchte.

Die Datei liegt in einem internen Array als Ressource vor und wird mittels Rewrite und Blickwrite erstellt. Vielleicht sollte ich zu Createfile umschwenken...
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Hilfedatei temporär erstellen und wieder löschen

  Alt 6. Jun 2014, 23:24
Du kannst ja einfach mal probieren, ob sich diese Datei auch direkt aus den Resourcen laden lässt,

http://msdn.microsoft.com/en-us/libr...loband%29.aspx
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Hilfedatei temporär erstellen und wieder löschen

  Alt 8. Jun 2014, 05:56
Also ich würde die Anwendung in einer Zip-Datei verteilen oder aber die Hilfe-Datei aus der Ressource extrahieren und nicht wieder löschen. Also nur extrahierten, wenn sie nicht gefunden wird. Alles andere ist irgendwie - komisch.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
439 Beiträge
 
Delphi 12 Athens
 
#8

AW: Hilfedatei temporär erstellen und wieder löschen

  Alt 8. Jun 2014, 16:04
Wie erstellst du denn die Datei?

Wenn man dafür FILE_ATTRIBUTE_TEMPORARY (MSDN-Library durchsuchenCreateFile) verwendet, dann löscht Windows die Datei automatisch, selbst wenn dein Progamm abstürzt.
In wie weit FILE_FLAG_DELETE_ON_CLOSE helfen könnte, kann ich jetzt nicht sagen.

Alternativ gäbe es auch andere Hilfesysteme, als diese HLP-Dateien.
So ich habe die Dateierstellung auf CreateFile umgeschrieben, auch in Verbindung mit FILE_ATTRIBUTE_TEMPORARY und FILE_FLAG_DELETE_ON_CLOSE. Ersteres hat leider keinen Einfluss, die Datei lässt sich nachwievor nicht löschen. Bei FILE_FLAG_DELETE_ON_CLOSE wird die Datei garnicht erst erstellt und ich kann die Hilfe nicht laden. Das passiert folgendermaßen:

Delphi-Quellcode:
FHandle:=CreateFile(PChar(Filename),
                        GENERIC_WRITE,
                        0,
                        nil,
                        CREATE_ALWAYS,
                        FILE_ATTRIBUTE_TEMPORARY,
                        0);
Sicher gibt es andere Hilfesysteme, ich habe nun aber alles auf diese CHM-Datei ausgerichtet und dachte, ein einfacher Löschvorgang wäre nicht problematisch. Leider doch...
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#9

AW: Hilfedatei temporär erstellen und wieder löschen

  Alt 8. Jun 2014, 17:16
Ja, nicht du löschst diese Datai.

Du beendest einfach dein Programm und wenn alle Programme, auch das WinHelp, die Datei freigegeben haben, dann räumt Windows auf.
Also nicht vergessen dein FileHandle offen zu lassen, bis zum Programmende. (da WinHelp die Datei ja anfangs noch nicht offen hat)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 8. Jun 2014 um 17:27 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:05 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