Einzelnen Beitrag anzeigen

SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#11

AW: Mathematik alpha

  Alt 17. Dez 2015, 15:08
-Die Hilfe funktioniert bei mir nicht. Das Inhaltsverzeichnis ist zwar da, aber sonst scheint die Hilfe leer zu sein!?
Mist.
Dieses Problem tritt leider bei dem einen oder anderen immer wieder auf. Am Windows-System liegt es nicht, da die Hilfe von XP bis 10 korrekt angezeigt wird. Nur leider nicht bei allen.
Das kann ich erklären. Die CHM-Datei wird nicht richtig angezeigt, weil sie aus dem Internet stammt!
Windows, genauer gesagt der Browser, markiert heruntergeladene Dateien als "aus unsicherer Quelle stammend". Internet Explorer macht das schon lange, Firefox hat's auch irgendwann mal übernommen, und andere Browser machen es mittlerweile wahrscheinlich auch.
Selbst die Entpackprogramme helfen mit. D.h. wenn ich mir deine alpha.zip runterlade, wird sie markiert. Entpacke ich dieses Archiv mit Windows oder z.B. WinRAR, dann übernehmen diese Programme die Markierung des Archivs für alle daraus entpackten Dateien.

Versucht man eine markierte Exe auszuführen, zeigt der Explorer eine Warnung à la "Der Computer wurde durch Windows geschützt" (siehe hier). Wenn man die Exe trotzdem ausführen will, muss man zuerst auf "Weitere Informationen" klicken, um die Option eingeblendet zu bekommen. Die Markierung wird dann beim ersten Start entfernt. Außerdem kann man sie im Eigenschaften-Dialog (Alt+Enter) sehen und entfernen (siehe hier).

Wie wird diese Markierung realisiert? Als alternativer NTFS Datenstrom. In NTFS können Dateien beliebig viele davon haben, angesprochen werden sie mit einem Doppelpunkt nach dem Dateinamen plus Datenstromname. Der Datenstrom, um den es sich hier dreht, heißt "Zone.Identifier" und enthält Text im guten alten INI-Format:
Code:
[ZoneTransfer]
ZoneId=3
Anschauen kann man sich diesen Datenstrom z.B. so: Konsole öffnen (cmd.exe oder ähnliches), dann "notepad C:\WasAuchImmer\matlex.chm:Zone.Identifier" eingeben.
Programmatisch löschen geht zum Glück sehr einfach:
Delphi-Quellcode:
var
  BaseDir: string;
begin
  BaseDir := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)));
  if FileExists(BaseDir + 'matlex.chm:Zone.Identifier') then
    DeleteFile(BaseDir + 'matlex.chm:Zone.Identifier');
  // selbes Prozedere mit weiteren Dateien falls nötig oder gewünscht
end;
Danach funktioniert die Hilfedatei dann richtig.

Ich habe mir übrigens auch endlich mal die Zeit genommen, dein Programm anzuschauen. Es ist wirklich sehr beeindruckend!

Geändert von SMO (17. Dez 2015 um 15:12 Uhr)
  Mit Zitat antworten Zitat