AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Dateiendung mit Programm verknüpfen...?!
Thema durchsuchen
Ansicht
Themen-Optionen

Dateiendung mit Programm verknüpfen...?!

Ein Thema von T.E. · begonnen am 25. Sep 2007 · letzter Beitrag vom 18. Sep 2017
Antwort Antwort
T.E.

Registriert seit: 27. Mai 2007
Ort: Hamburg
284 Beiträge
 
Delphi XE2 Enterprise
 
#1

Dateiendung mit Programm verknüpfen...?!

  Alt 25. Sep 2007, 14:51
Hallo!

Ich hoffe ich bin hiermit im Richtigen THema...

Ich habe mir eine neue Dateiendung geschaffen (*.icctmp) und mit folgender Funktion mit meinem Programm verknüpft:
Delphi-Quellcode:
function 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;
Installiert wird diese Endung beim Aufrufen des Programms im oncreate- ereignis mit folgendem Aufruf:
InstallExt('.icctmp', 'ICC Verlauf', 'Gespeicherter ICC Verlauf', ParamStr(0), '"%1"',0); So nun wird die Dateiendung mit meinem Programm verküpft und wenn ich eine Datei des Typs öffne wird mein Programm auch ganz normal gestartet...nur leider wird mir der Inhalt der Datei nicht angezeigt...

Woran liegt das?
Gruß Torben
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Dateiendung mit Programm verknüpfen...?!

  Alt 25. Sep 2007, 15:01
Zitat von T.E.:
So nun wird die Dateiendung mit meinem Programm verküpft und wenn ich eine Datei des Typs öffne wird mein Programm auch ganz normal gestartet...nur leider wird mir der Inhalt der Datei nicht angezeigt...

Woran liegt das?
Na du bist gut Nur weil du eine Dateiendung mit einem Programm verknüpfst, muss das Programm noch lange nicht wissen, was es damit zu tun hat
Der Dateiname der zu öffnenden Datei wird deinem Programm als Startparameter übergeben, daher musst du dann beim Start mit Delphi-Referenz durchsuchenParamCount und Delphi-Referenz durchsuchenParamStr ob, wieviele und welche Parameter du hast und dann entsprechend drauf reagieren
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#3

Re: Dateiendung mit Programm verknüpfen...?!

  Alt 25. Sep 2007, 15:02
Weil Du vielleicht vergessen hast, die im ParamStr(1) als Argument übergebene Datei - wie auch immer und in was auch immer Du das tun willst - zu laden?

Bspw. so:
Stringlist.LoadFromFile(ParamStr(1));
  Mit Zitat antworten Zitat
T.E.

Registriert seit: 27. Mai 2007
Ort: Hamburg
284 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Dateiendung mit Programm verknüpfen...?!

  Alt 25. Sep 2007, 15:22
gut und schön aber mein Programm hat öffnet die Dateien normalerweise mit Öffnen und einem OpenDialog wie muss ich das denn da machen?
Delphi-Quellcode:
procedure TTMPV.ffnen1Click(Sender: TObject);
begin
if Open.Execute then
  TempViewer.Lines.LoadFromFile(Open.FileName)
else
  TempViewer.Lines.Clear;
end;
ich kann ja irgendwie nicht ohne "Probleme" (exception) da einfach noch die Loadfromfile(Paramstr(1)) noch mit rein bringe...oder wo soll das hin??

(Sry. für die dumme frage... aber ich stell mich halt manchmal ein bisschen blöd an )
Gruß Torben
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Dateiendung mit Programm verknüpfen...?!

  Alt 25. Sep 2007, 15:32
Du musst genau das tun, was passiert, wenn der Nutzer die Datei manuell auswählt:
TempViewer.Lines.LoadFromFile(Paramstr(1));
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#6

Re: Dateiendung mit Programm verknüpfen...?!

  Alt 25. Sep 2007, 15:36
Ich glaube, es geht ihm eher darum, dass er nicht weiss, wo er das machen soll.

Wenn Du per OpenDialog öffnest, dann löst Du diesen doch z.B. durch einen ButtonClick aus:
Delphi-Quellcode:
Procedure TForm1.ToolButton1Click(Sender: TObject);
Begin
   If OpenDialog1.Execute Then
      Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
End;
Wenn Du eine als Argument übergebene Datei beim Start des Programms laden möchtest, dann machst Du das beispielsweise im OnCreate-Ereignis:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
   If ParamStr(1) <> 'Then
      Memo1.Lines.LoadFromFile(ParamStr(1));
end;
Da müssen natürlich noch einige Fehlerbehandlungsmechanismen dazu.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Dateiendung mit Programm verknüpfen...?!

  Alt 25. Sep 2007, 15:50
Zitat von Apollonius:
Du musst genau das tun, was passiert, wenn der Nutzer die Datei manuell auswählt:
TempViewer.Lines.LoadFromFile(Paramstr(1));
[edit] @s-off: Wie und wo war gefragt... von mir etwas zu schnell gepostet.[/edit]

[edit]Ei verbibbsch, da hab' ich doch grad auf Zitat statt auf Edit geklickt... Sowas aber auch.[/edit]
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#8

Re: Dateiendung mit Programm verknüpfen...?!

  Alt 25. Sep 2007, 15:54
Zitat von Apollonius:
Zitat von Apollonius:
Du musst genau das tun, was passiert, wenn der Nutzer die Datei manuell auswählt:
TempViewer.Lines.LoadFromFile(Paramstr(1));
[edit] @s-off: Wie und wo war gefragt... von mir etwas zu schnell gepostet.[/edit]
Nein, das 'wie' hat er sich selber beantwortet:
Zitat von T.E.:
[...]Loadfromfile(Paramstr(1)) noch mit rein bringe
Das 'wo' hingegen war noch offen.
Zitat von T.E.:
...oder wo soll das hin??


Aber mal ehrlich - wollen wir uns wegen solcher Kleinigkeiten streiten?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Dateiendung mit Programm verknüpfen...?!

  Alt 25. Sep 2007, 16:34
Moin T.E.,

hat zwar nichts mit Deinem eigentlichen Problem zu tun, aber:

Zu jedem OpenKey gehört auch ein CloseKey, und da fehlen bei Dir doch einige.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#10

AW: Dateiendung mit Programm verknüpfen...?!

  Alt 18. Sep 2017, 15:54
Hallo Torben,

nimm bitte mal im allerersten Post bei
...InstallExt('.icctmp', 'ICC Verlauf', 'Gespeicherter ICC Verlauf', ParamStr(0), '"%1"',0); ...
im vorletzten Parameter die " weg!

Damit funktioniert die Übergabe von Leerzeichen nicht (mehr) - jedenfalls bei mir. Ich habe ewig gebraucht und bin auch erst durch die netten Helfer der DP drauf gekommen. Der Post wird bei google sehr weit oben gelistet. Es wäre also toll, wenn er dann auch vollständig richtig wäre
Alex Winzer
  Mit Zitat antworten Zitat
Antwort Antwort


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