Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Dateiendung mit dem eigenen Programm verknüpfen (https://www.delphipraxis.net/180828-dateiendung-mit-dem-eigenen-programm-verknuepfen.html)

superjojo 20. Jun 2014 15:01

Dateiendung mit dem eigenen Programm verknüpfen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo

Ich versuche mir einen eigenen Mediaplayer zu programmieren mit Delphi.
Nun möchte ich, dass wenn man eine Datei (Bsp .mp3) öffnet, dass diese automatisch mit meinem selbstgeschriebenen Programm geöffnet wird.

Habe schon mal gegoogelt und das hier gefunden
http://www.delphi-treff.de/tipps-tri...m-verknuepfen/

Habe auch den dort empfohlenen Code angewendet
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
if (ParamCount>0) and
    (FileExists(ParamStr(1))) then
   Memo1.Lines.LoadFromFile(ParamStr(1));
end;
Es kommt jedoch, wenn ich eine Datei mit meinem Programm öffne, eine Fehlermeldung (Siehe Bild im Anhang).

Habe auch gelesen, dass man irgendwie an die Verknüpfung mit dem Programm ein %1 anhängen müsste (Bsp C:\Project1.exe %1) aber wo muss ich das hinschreiben?

Puke 20. Jun 2014 15:20

AW: Dateiendung mit dem eigenen Programm verknüpfen
 
Macht doch die Funktion in deinem aufgeführten Link automatisch ... Statt der %1 setzt Windows die zu öffnende Datei ein

DeddyH 20. Jun 2014 15:25

AW: Dateiendung mit dem eigenen Programm verknüpfen
 
Man muss schon genau lesen:
Zitat:

“ParamStr”
Enthält mögliche Parameter und deren Schreibweise. (z.B. “%1″ um auch Pfadangaben mit Leerzeichen zu übergeben)

himitsu 20. Jun 2014 15:29

AW: Dateiendung mit dem eigenen Programm verknüpfen
 
Bist du dir sicher, daß die Fehlermeldung mit dem hier erwähnten Thema zu tun hat?

Macht dein Programm noch etwas anderes, nach dem Programmstart?
z.B. versucht es gleich sofort diese Datei zu öffnen und abzuspielen?

superjojo 20. Jun 2014 17:57

AW: Dateiendung mit dem eigenen Programm verknüpfen
 
1. Vielen Dank für die schnellen Antworten

2. @Puke Habe ich schon versucht, doch die dort angegebene Funktion wirft bei mir massenhaft Fehler auf. Da ich von dem was da in der Funktion steht so ziemlich gar nichts verstehe habe ich auch keine Ahnung wie ich die Fehler beheben soll.

3. @himitsu Also Im OnCreate event passiert nichts außer
Delphi-Quellcode:
if (ParamCount>0) and
    (FileExists(ParamStr(1))) then
   Memo1.Lines.LoadFromFile(ParamStr(1));
Auch sonst besteht mein Programm aus nur sehr wenigen Befehlen, die alle fehlerfrei abliefen bevor ich das OnCreate Event mit obigem Quellcode erzeugt habe. Jedoch habe ich bei dem TMediaPlayer der die Datei schließlich abspielen soll AutoOpen aktiviert.

Christian Seehase 20. Jun 2014 18:48

AW: Dateiendung mit dem eigenen Programm verknüpfen
 
Moin,

zum Thema "Dateiendung registrieren" haben wir zwei Einträge in der Codelib.

Das der Quelltext den Du da gepostet hast nichts mit dem Laden einer Mediendatei, wie z.B., MP3 zu tun hat ist Dir schon klar?
Ein MP3 lässt sich nicht in einem Memo öffnen, sondern die Datei muss der Eigenschaft FileName des Mediaplayers zugwiesen werden.

Garfield 20. Jun 2014 22:13

AW: Dateiendung mit dem eigenen Programm verknüpfen
 
Warum wird die Datei in das Memo geladen? Soll die nicht abgespielt werden?

himitsu 20. Jun 2014 23:34

AW: Dateiendung mit dem eigenen Programm verknüpfen
 
Vielleicht meinte man eigentlich ein Add statt dem LoadFromFile? :stupid:

DeddyH 21. Jun 2014 05:37

AW: Dateiendung mit dem eigenen Programm verknüpfen
 
Es steht so im Beispielcode, that' s all.

superjojo 21. Jun 2014 09:34

AW: Dateiendung mit dem eigenen Programm verknüpfen
 
Ich habe den Fehler gefunden.
himitsu hatte absolut recht statt dem .loadfromFile muss ein .add dahin und schon funktioniert es.

Es muss also so heißen

Delphi-Quellcode:
if (ParamCount>0) and
    (FileExists(ParamStr(1))) then
   Memo1.Lines.Add(ParamStr(1));
Alternativ könnte man den Dateifad natürlich auch direkt dem Mediaplayer übergeben.

Vielen dank für die Hilfe.

himitsu 21. Jun 2014 09:57

AW: Dateiendung mit dem eigenen Programm verknüpfen
 
Aber dennoch würde ich wetten, daß der Fehler in dem Code liegt, den man hier nicht gezeigt hat,
denn das Memo gibt garantiert diese Fehlermeldung nicht aus.

Vermutung: Es wird in einem "geheimen" Code eine Zeile aus dem Memo genommen, welche als Dateiname an den MediaPlayer übergeben und dort als Dateiname verwendet wird.

Garfield 21. Jun 2014 12:11

AW: Dateiendung mit dem eigenen Programm verknüpfen
 
Zitat:

Zitat von DeddyH (Beitrag 1263076)
Es steht so im Beispielcode, that' s all.

Ich weiß.

EWeiss 21. Jun 2014 13:31

AW: Dateiendung mit dem eigenen Programm verknüpfen
 
Zitat:

Zitat von superjojo (Beitrag 1263082)
Ich habe den Fehler gefunden.
himitsu hatte absolut recht statt dem .loadfromFile muss ein .add dahin und schon funktioniert es.

Es muss also so heißen

Delphi-Quellcode:
if (ParamCount>0) and
    (FileExists(ParamStr(1))) then
   Memo1.Lines.Add(ParamStr(1));
Alternativ könnte man den Dateifad natürlich auch direkt dem Mediaplayer übergeben.

Vielen dank für die Hilfe.

Der sinn dahinter besteht einfach darin das der Stream nicht nur abgespielt sondern auch gleichzeitig
im Memo festgehalten werden soll um ihn später nochmalig abspielen zu können.
Wäre ja möglich das die Liste im Memo beim beenden abgespeichert wird.

Aber nur geraten.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:38 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