Autor Beitrag
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Di 10.11.09 21:04 
Dann schlage ich an dieser Stelle vor, dass in solchen Fällen evtl. die Lösungen nochmal zum Abschluss gepostet werden, denn ich persönlich bin nicht draus schlau geworden.

Aber wie dem auch sei:

Ich möchte mich nochmal eben für meine forsche Antwort entschuldigen, die ich Xentar gab.

Terra

_________________
Hasta La Victoria Siempre
Bergmann89 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mi 11.11.09 08:24 
Wo hast du denn noch Probleme? Mit den Leerzeichen in dem String? Das hab ich auch net anders gelöst als du: einfach mit ner Schleife zusammenstückeln...

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 11.11.09 11:35 
Das ist gar nicht notwendig, wenn die in Anführungszeichen stehen. Dann wird das komplett in einem Parameter übergeben.

Das Problem in diesem Fall war, dass nicht nur einmal welche hinzugefügt wurden, sondern zweimal. Also ""%1"", so dass es wieder nicht ging. Mit "%1" in der Registry klappt es auch.
Terra23
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Mi 11.11.09 11:52 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Das ist gar nicht notwendig, wenn die in Anführungszeichen stehen. Dann wird das komplett in einem Parameter übergeben.

Das Problem in diesem Fall war, dass nicht nur einmal welche hinzugefügt wurden, sondern zweimal. Also ""%1"", so dass es wieder nicht ging. Mit "%1" in der Registry klappt es auch.


Das Problem an sich war, dass der Fehler schon aus dem Eintrag in EasyHelper hervorging.

Für alle, die in Zukunft nach diesem Thread suchen und keine Lösung finden:



Dies ist die Funktion zur Verknüpfung einer Dateiendung mit dem Programm:
ausblenden volle Höhe Delphi-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:
function TForm1.InstallExt(Extension, ExtDescription, FileDescription, OpenWith, ParamString: string; IconIndex: Integer = 0): Boolean;
var
  Reg: TRegistry;
begin
  Result := False;
  if Extension <> '' then
  begin
    if Extension[1] <> '.' then
      Extension := '.' + Extension;

    Reg := TRegistry.Create;
    try
      Reg.RootKey := HKEY_CLASSES_ROOT;
      if Reg.OpenKey(Extension, True) then
      begin
       Reg.WriteString('', ExtDescription);
       if Reg.OpenKey('\' + ExtDescription, True) then
       begin
         Reg.WriteString('', FileDescription);
         if Reg.OpenKey('DefaultIcon', True) then
         begin
           Reg.WriteString('', Format('%s,%d', [OpenWith, IconIndex]));
           if Reg.OpenKey('\' + ExtDescription + '\Shell\Open\Command', True) then
           begin
             Reg.WriteString('', Format('"%s" %s', [OpenWith, ParamString]));
             Result:=True;
           end;
         end;
       end;
     end;
  finally
    Reg.Free;
  end;
  end;
end;


--> Der orangene Teil ist im EasyHelper-Eintrag auch noch in " " geschrieben.

So verknüpft man eine bestimmte Dateiendung mit dem Programm:
ausblenden Delphi-Quelltext
1:
InstallExt('.Dateiendung''Beschreibung der Dateiendung''Beschreibung des Programms', ParamStr(0), '"%1"'0);					


--> ParamStr(0) gibt den Pfad der EXE zurück, die die Datei ausführen soll; in diesem Fall ist es euer Programm. Die 0 am Ende gibt das Icon eurer Anwendung mit und somit erhalten die registrierten Dateien euer Logo, so wie auch jedes Word-Dokument ein eigenes Symbol hat.

So wertet man die Parameter aus, wenn die Datei z.B. über den Explorer geöffnet wird:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
If ParamCount > 0 Then
  If FileExists (ParamStr(1) )
  Then Begin
       FileName := ParamStr(1);
       TueWas mit FileName; /// z.B. FileName an den OpenDialog übergeben und die Öffnen-Prozedur durchlaufen
       End;


Danke für die Hilfe (auch in meinem Thread) und dann sollte man hier evtl. dann doch schließen, bevor jemand den Thread in einem Jahr nochmal ausgräbt. ;)

Gruß,

Terra

_________________
Hasta La Victoria Siempre
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mi 11.11.09 13:02 
user profile iconTerra23 hat folgendes geschrieben Zum zitierten Posting springen:
Danke für die Hilfe (auch in meinem Thread) und dann sollte man hier evtl. dann doch schließen, bevor jemand den Thread in einem Jahr nochmal ausgräbt. ;)

Dann wird er schon drauf aufmerksam gemacht.. :D

_________________
PROGRAMMER: A device for converting coffee into software.