![]() |
Dateiendung mit Programm verknüpfen...?!
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:
Installiert wird diese Endung beim Aufrufen des Programms im oncreate- ereignis mit folgendem Aufruf:
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;
Delphi-Quellcode:
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...
InstallExt('.icctmp', 'ICC Verlauf', 'Gespeicherter ICC Verlauf', ParamStr(0), '"%1"',0);
Woran liegt das? |
Re: Dateiendung mit Programm verknüpfen...?!
Zitat:
Der Dateiname der zu öffnenden Datei wird deinem Programm als Startparameter übergeben, daher musst du dann beim Start mit ![]() ![]() |
Re: Dateiendung mit Programm verknüpfen...?!
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:
Delphi-Quellcode:
Stringlist.LoadFromFile(ParamStr(1));
|
Re: Dateiendung mit Programm verknüpfen...?!
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:
ich kann ja irgendwie nicht ohne "Probleme" (exception) da einfach noch die Loadfromfile(Paramstr(1)) noch mit rein bringe...oder wo soll das hin??
procedure TTMPV.ffnen1Click(Sender: TObject);
begin if Open.Execute then TempViewer.Lines.LoadFromFile(Open.FileName) else TempViewer.Lines.Clear; end; (Sry. für die dumme frage... aber ich stell mich halt manchmal ein bisschen blöd an :gruebel: ) |
Re: Dateiendung mit Programm verknüpfen...?!
Du musst genau das tun, was passiert, wenn der Nutzer die Datei manuell auswählt:
Delphi-Quellcode:
TempViewer.Lines.LoadFromFile(Paramstr(1));
|
Re: Dateiendung mit Programm verknüpfen...?!
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:
Wenn Du eine als Argument übergebene Datei beim Start des Programms laden möchtest, dann machst Du das beispielsweise im OnCreate-Ereignis:
Procedure TForm1.ToolButton1Click(Sender: TObject);
Begin If OpenDialog1.Execute Then Memo1.Lines.LoadFromFile(OpenDialog1.FileName); End;
Delphi-Quellcode:
Da müssen natürlich noch einige Fehlerbehandlungsmechanismen dazu.
procedure TForm1.FormCreate(Sender: TObject);
begin If ParamStr(1) <> '' Then Memo1.Lines.LoadFromFile(ParamStr(1)); end; |
Re: Dateiendung mit Programm verknüpfen...?!
Zitat:
[edit]Ei verbibbsch, da hab' ich doch grad auf Zitat statt auf Edit geklickt... Sowas aber auch.[/edit] |
Re: Dateiendung mit Programm verknüpfen...?!
Zitat:
Zitat:
Zitat:
Aber mal ehrlich - wollen wir uns wegen solcher Kleinigkeiten streiten? :wink: |
Re: Dateiendung mit Programm verknüpfen...?!
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. ;-) |
AW: Dateiendung mit Programm verknüpfen...?!
Hallo Torben,
nimm bitte mal im allerersten Post bei Zitat:
Damit funktioniert die Übergabe von Leerzeichen nicht (mehr) - jedenfalls bei mir. Ich habe ewig gebraucht und bin auch erst durch ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 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