AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Mathematik alpha

Mathematik alpha

Ein Thema von Mathematiker · begonnen am 14. Dez 2015 · letzter Beitrag vom 18. Mai 2021
Antwort Antwort
SMO

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

AW: Mathematik alpha

  Alt 17. Dez 2015, 14: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 14:12 Uhr)
  Mit Zitat antworten Zitat
Mathematiker
(Gast)

n/a Beiträge
 
#2

AW: Mathematik alpha

  Alt 17. Dez 2015, 14:33
Hallo SMO,
Danke für deine sehr ausführliche Antwort.
Dass Programme aus dem Internet eine Warnmeldung bei der Erstausführung produzieren, kenne ich. Dass so etwas auch bei der chm-Hilfe auftritt, ist für mich überraschend.
Und damit habe ich wieder etwas gelernt. Sehr schön.

Programmatisch löschen geht zum Glück sehr einfach: ... Danach funktioniert die Hilfedatei dann richtig.
Genial. Ich habe sofort die Routine in die Haupt-EXE eingebaut.
Da beim Erststart das Nutzerverzeichnis angelegt wird, entferne ich nun dort gleich noch die "Sperre" für die Hilfedatei. Damit dürfte es funktionieren.
Ich tausche bei Dropbox das Programmpaket heute noch aus. Danke für die Superlösung.

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

Beste Grüße
Mathematiker

Nachtrag: Eine Frage noch
if FileExists(BaseDir + 'matlex.chm:Zone.Identifier') then wird im Debugger übersprungen. Müsste es nur
if FileExists(BaseDir + 'matlex.chm') then sein?

Geändert von Mathematiker (17. Dez 2015 um 14:39 Uhr)
  Mit Zitat antworten Zitat
SMO

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

AW: Mathematik alpha

  Alt 17. Dez 2015, 14:50
Sicher, dass der Compiler dafür keinen Code produziert? Kann ich mir kaum vorstellen.

if FileExists(BaseDir + 'matlex.chm:Zone.Identifier') stimmt schon, denn ich möchte ja nicht wissen, ob die Datei matlex.chm existiert, sondern ob sie einen Datenstrom namens Zone.Identifier hat. Du könntest den Test natürlich auch weglassen und nur DeleteFile(BaseDir + 'matlex.chm:Zone.Identifier') aufrufen, wirft ja keine Exception wenn die Datei oder der Datenstrom nicht existiert, sondern liefert nur False zurück.

Edit: Nochmal getestet, sowohl FileExists als auch DeleteFile funktionieren wie gezeigt mit alternativen Datenströmen.

Geändert von SMO (17. Dez 2015 um 14:59 Uhr)
  Mit Zitat antworten Zitat
Mathematiker
(Gast)

n/a Beiträge
 
#4

AW: Mathematik alpha

  Alt 17. Dez 2015, 14:53
Ok, habe ich verstanden. Danke.
Da bei mir Zone.identifier nicht gesetzt ist, springt der Debugger drüber.
Ich versuche es jetzt auf einem anderen Rechner.

Beste Grüße
Mathematiker

Geändert von Mathematiker (17. Dez 2015 um 14:55 Uhr)
  Mit Zitat antworten Zitat
SMO

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

AW: Mathematik alpha

  Alt 17. Dez 2015, 15:06
Du brauchst gar keinen anderen Rechner. Öffne eine Konsole im Programmverzeichnis, oder mach dir eine kleine Batchdatei:

Code:
echo [ZoneTransfer] > matlex.chm:Zone.Identifier
echo ZoneId=3 >> matlex.chm:Zone.Identifier
Und schon hat matlex.chm den Datenstrom mit dem gewünschten Inhalt. Anzeigen in der Konsole geht leider nicht mit "type", aber so:
Code:
more < matlex.chm:Zone.Identifier
Oder wie zuvor erwähnt, mit "notepad matlex.chm:Zone.Identifier" kann man den Datenstrom sowohl anzeigen als auch erstellen.

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

n/a Beiträge
 
#6

AW: Mathematik alpha

  Alt 17. Dez 2015, 15:19
Hallo SMO,
Danke. Jetzt funktioniert es perfekt.

Beste Grüße
Mathematiker
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Mathematik alpha

  Alt 17. Dez 2015, 20:03
Hallo Mathematiker,
also ich finde das Programm wirklich wahnsinn. Mega umfangreich was die Arten der Mathematik angeht und noch dazu schön erklärt mit dem Lexikon. Leider verstehe ich davon zu wenig, da man mit dem Schulmathe das ich vor einigen Jahren hatte, so etwas überhaupt nicht mal im Ansatz kennenlernt.

Was mich aber viel mehr interessieren würde ist, wie viele Codezeilen denn dahinter stecken?! Und hast du das alles alleine geschrieben oder war da Hilfe dabei? Und in welcher Zeit? Wäre super, wenn du das beantworten könntest.

Ein dickes Lob! Super Programm!
  Mit Zitat antworten Zitat
Antwort Antwort

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz