Autor |
Beitrag |
Apo95
Beiträge: 129
Win2000, WinXP, WinServer 2003 Standard x86, Win7x64
Delphi 6 Enterprise, D2009 Architect, RAD Studio XE6 Architect
|
Verfasst: Mi 10.04.13 21:07
Hi,
ich habe derzeit ein kleines Problem(chen) mit dem Versuch, eine Hilfedatei zu öffnen. Gedacht habe ich mir das so :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Indexeinblenden1Click(Sender: TObject); begin cStore := ExpandEnvStr('%ProgramFiles%\EA\temp\QUIZGG_Hilfe.chm');
if fileExists(cStore_reg)=false then begin Application.MessageBox('GoetheQuiz 2010 war nicht in der Lage, die Hilfedatei zu finden.'+ #13+ 'Installieren Sie diese bitte erneut. Weitere Informationen entehmen Sie bitte der Liesmich-Datei auf CD oder in der Verpackung.', 'Fataler Fehler', MB_ICONSTOP or MB_OK) ; end else begin
SHELLEXECUTE(handle,nil,PCHAR(cStore),nil,nil,SW_SHOW); end; end; |
Die Datei wird nicht geöffnet, sondern die Fehlermeldung erscheint (s.u.). Ich weiß nicht, was hier falsch läuft... .
Für Hilfe bin ich sehr dankbar!!
Lieben Gruß Moderiert von Narses: Topic aus VCL (Visual Component Library) verschoben am Mi 10.04.2013 um 23:35
_________________ Lette-Verein MIA
|
|
Gerd Kayser
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mi 10.04.13 23:48
Mir fallen da 3 Dinge auf. Möglicherweise steckt Dein Problem bei Punkt 2 oder 3.
1. Man vergleicht NIE direkt mit "= false" oder "= true".
Delphi-Quelltext 1:
| if not FileExists(cStore_reg) then |
2. Der Dateiname enthält ein Leerzeichen.
3. Schau Dir mal in der Eingabeaufforderung (CMD) an, wie das Programmverzeichnis genau heißt. Auf meinem Rechner (Windows 7 32-Bit) wird im Windowsexplorer "C:\Programme" angezeigt, in der Eingabeaufforderung jedoch "C:\Program Files". Wenn ich mich nicht irre, gibt es bei 64-Bit zwei Programmverzeichnisse.
Lasse Dir auch mal anzeigen, ob das Verzeichnis richtig zusammengesetzt ist.
Delphi-Quelltext 1:
| ShowMessage(cStore_reg); |
Für diesen Beitrag haben gedankt: Apo95
|
|
Tranx
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Do 11.04.13 04:35
Gerd Kayser hat folgendes geschrieben : |
3. Schau Dir mal in der Eingabeaufforderung (CMD) an, wie das Programmverzeichnis genau heißt. Auf meinem Rechner (Windows 7 32-Bit) wird im Windowsexplorer "C:\Programme" angezeigt, in der Eingabeaufforderung jedoch "C:\Program Files". Wenn ich mich nicht irre, gibt es bei 64-Bit zwei Programmverzeichnisse.
|
Das mit "C:\Program Files" und "C:\Programme" ist bei Windows nur ein Mapping. Der Verweis in beiden Fällen geht auf das selbe Verzeichnis. Im 64-bit Windows gibt es "C:\Program files" für 64 bit und "C:\Program Files (x86)" für 32 bit-Programme. Die jedoch als "C:\Programme" (64 bit) und "C:\Programme (x86)" (32 bit), gemappt werden. Infos dazu:
kittblog.com/article...es-wieder-programme/
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
Für diesen Beitrag haben gedankt: Gerd Kayser
|
|
Gerd Kayser
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Do 11.04.13 06:58
Tranx hat folgendes geschrieben : | Das mit "C:\Program Files" und "C:\Programme" ist bei Windows nur ein Mapping. |
Es sieht wohl so aus, dass es hier wohl ein Problem auf meinem Rechner gibt.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47:
| Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.
C:\Users\GerdKayser>cd\
C:\>dir *.* /a d Datenträger in Laufwerk C: ist System Volumeseriennummer: 3AA2-CE9E
Verzeichnis von C:\
21.11.2012 19:01 <DIR> $Recycle.Bin 10.06.2009 23:42 24 autoexec.bat 12.12.2012 04:30 <DIR> CanoScan 10.06.2009 23:42 10 config.sys 14.07.2009 06:53 <VERBINDUNG> Documents and Settings [C:\Users] 15.09.2012 06:21 <VERBINDUNG> Dokumente und Einstellungen [C:\Users] 16.09.2012 08:59 0 IO.SYS 16.09.2012 08:59 0 MSDOS.SYS 11.04.2013 05:51 <DIR> Program Files 29.03.2013 20:43 <DIR> ProgramData 15.09.2012 06:21 <VERBINDUNG> Programme [C:\Program Files] 15.09.2012 06:21 <DIR> Recovery 07.02.2013 12:47 <DIR> Sniffer 11.04.2013 00:07 <DIR> System Volume Information 11.04.2013 00:09 <DIR> Users 11.04.2013 06:08 <DIR> Windows
Verzeichnis von C:\
4 Datei(en), 34 Bytes 12 Verzeichnis(se), 38.540.886.016 Bytes frei
C:\>dir Datenträger in Laufwerk C: ist System Volumeseriennummer: 3AA2-CE9E
Verzeichnis von C:\
10.06.2009 23:42 24 autoexec.bat 10.06.2009 23:42 10 config.sys 11.04.2013 05:51 <DIR> Program Files 07.02.2013 12:47 <DIR> Sniffer 11.04.2013 00:09 <DIR> Users 11.04.2013 06:08 <DIR> Windows 2 Datei(en), 34 Bytes 4 Verzeichnis(se), 38.540.886.016 Bytes frei |
Im Windowsexplorer sehe ich bei eingeblendeten versteckten Dateien und Systemdateien "c:\programme" zweimal, davon einmal mit einem Schloßsymbol. Darauf kann ich selbst im abgesicherten Modus nicht zugreifen. Wenn ich mich nicht irre, war das bereits seit der Windowsinstallation so. Vielleicht setze ich demnächst mal mein Windows neu auf.
Für diesen Beitrag haben gedankt: Apo95
|
|
SvenAbeln
Beiträge: 334
Erhaltene Danke: 3
|
Verfasst: Do 11.04.13 08:27
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Indexeinblenden1Click(Sender: TObject); begin cStore := ExpandEnvStr('%ProgramFiles%\EA\temp\QUIZGG_Hilfe.chm');
if fileExists(cStore_reg)=false then begin Application.MessageBox('GoetheQuiz 2010 war nicht....','Fataler Fehler', MB_ICONSTOP or MB_OK; end else begin SHELLEXECUTE(handle,nil,PCHAR(cStore),nil,nil,SW_SHOW); end; end; |
Du verwendet hier 2 verschiedene Variablen, cStore und cStore_reg. Steht denn auch in beiden der richtige Pfad zu der Hilfedatei?
|
|
jaenicke
Beiträge: 19277
Erhaltene Danke: 1741
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 11.04.13 09:13
Gerd Kayser hat folgendes geschrieben : | Im Windowsexplorer sehe ich bei eingeblendeten versteckten Dateien und Systemdateien "c:\programme" zweimal, davon einmal mit einem Schloßsymbol. Darauf kann ich selbst im abgesicherten Modus nicht zugreifen. Wenn ich mich nicht irre, war das bereits seit der Windowsinstallation so. Vielleicht setze ich demnächst mal mein Windows neu auf. |
Das kannst du dir sparen, denn das ist richtig so. Systemdateien einblenden sollte man seit Vista nur, wenn man genau diese Sachen so sehen möchte. Ansonsten reicht es vollkommen, wenn du versteckte einblendest, das entspricht in etwa der Einstellung unter XP, wenn du auch Systemdateien eingeblendet hattest.
Dann sieht das auch normal aus.
Zum Thema:
Einen solchen Pfad zu nehmen wie hier ist schlicht keine gute Idee, denn was, wenn der User das Programm schlicht nicht an den Ort installieren möchte? Stattdessen sollte der Installer (wie es eigentlich auch die meisten tun) das Installationsverzeichnis in der Registry ablegen, dann kannst du dieses benutzen. Und sollte das nicht in der Registry stehen, kannst du ja vom Verzeichnis deiner .exe ausgehen.
|
|
Tranx
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Do 11.04.13 10:24
jaenicke hat folgendes geschrieben : | Zum Thema:
Einen solchen Pfad zu nehmen wie hier ist schlicht keine gute Idee, denn was, wenn der User das Programm schlicht nicht an den Ort installieren möchte? Stattdessen sollte der Installer (wie es eigentlich auch die meisten tun) das Installationsverzeichnis in der Registry ablegen, dann kannst du dieses benutzen. Und sollte das nicht in der Registry stehen, kannst du ja vom Verzeichnis deiner .exe ausgehen. |
Dem kann ich nur zustimmen. Und zudem, eine Hilfedatei in ein Verzeichnis mit dem Namen "Temp" abzulegen ist zudem noch unsinnig, denn was ist, wenn Du mal auf die Idee kommst, die Temp-Verzeichnisse auf dem Laufwerk zu löschen. Temp ist ja bloß für das, was der name sagt: temporäre Dateien. Und eine Hilfe ist eben alles andere als das.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
|