Autor Beitrag
Apo95
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 129

Win2000, WinXP, WinServer 2003 Standard x86, Win7x64
Delphi 6 Enterprise, D2009 Architect, RAD Studio XE6 Architect
BeitragVerfasst: 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 :

ausblenden 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');
// cStore := 'C:\Programme\EA\GoetheQuiz 2010beta\Help\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);
 //   SHELLEXECUTE(handle,nil,('QUIZGG_Hilfe.chm'),nil,PCHAR('C:\Programme\EA\temp'),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 user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Mi 10.04.2013 um 23:35

_________________
Lette-Verein MIA
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: 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".
ausblenden 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.
ausblenden Delphi-Quelltext
1:
ShowMessage(cStore_reg);					

Für diesen Beitrag haben gedankt: Apo95
Tranx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Do 11.04.13 04:35 
user profile iconGerd Kayser hat folgendes geschrieben Zum zitierten Posting springen:

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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Do 11.04.13 06:58 
user profile iconTranx hat folgendes geschrieben Zum zitierten Posting springen:
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.
ausblenden volle Höhe Quelltext
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 334
Erhaltene Danke: 3



BeitragVerfasst: Do 11.04.13 08:27 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18704
Erhaltene Danke: 1621

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 11.04.13 09:13 
user profile iconGerd Kayser hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 648
Erhaltene Danke: 85

WIN 2000, WIN XP
D5 Prof
BeitragVerfasst: Do 11.04.13 10:24 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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.