Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Registry - FileExtensions eintragen (https://www.delphipraxis.net/42698-registry-fileextensions-eintragen.html)

MathiasSimmack 23. Mär 2005 13:52

Re: Registry - FileExtensions eintragen
 
Das ist auch unwichtig, weil es dir für dein Projekt vermutlich nicht helfen wird.

Jarmen_Kell 23. Mär 2005 14:05

Re: Registry - FileExtensions eintragen
 
Naja ich habe vereinzelt "MediaPlayer" und Mutex etc erspäht ... das ist schon mal gut (:

Also im Prinzip habe ich jetzt noch das Problem, dass beim Öffnen, einer nun ja erfolgreich registrierten Datei zwar das Prog geöffnet wird und der Parameter übergeben. Das Problem an der Sache ist nur, dass immer nur ein Dateiname übergeben wird.
Vermutlich, weil normalerweise für jede Datei das Prog neu gestartet wird. Dies wird allerdings durch die Mutex gleich wieder gekillt.
Also muss ich jetzt versuchen, dass vor der "Vernichtung" die Parameter an die Haupt-App übergeben werden.
:gruebel:

Oder so in der Art :zwinker:

Edit: Plural von "Problem" durch den Singular ersetzt - scheinbar habe ich beim schreiben vergessen, was mein 2. Prob war ;)

Gregg 23. Mär 2005 22:56

Re: Registry - FileExtensions eintragen
 
Delphi-Quellcode:
   assignfile(temp,(extractfiledrive(paramstr(0))+'\Mediaplayer_System\temp.dat')); {Weise der Variable temp die temporäre Datei zu}
    if not fileexists(extractfiledrive(paramstr(0))+'\Mediaplayer_System\temp.dat') then {Wenn die temporäre Datei nicht existiert dann}
    rewrite(temp) {erstelle sie} else append(temp); {sonst öffne sie um Dateien anzuhängen}
 99: {label 99}
  strin:=''; {setze den zwischenspeicher für den Dateinamen auf nichts zurück}
if (paramcount>0) then {wenn einer oder mehrere Dateinamen übermittelt wurden dann}
  begin
   {mehre Dateien in Temporärer Datei speichern} 
   while not fileexists(strin) do begin {solange (strin) nicht existiert füge den nächsten Parameter hinzu}
   i:=i+1; {da ich keine For-Schleife benutzen kann, aber der Parameter verändert werden soll}
    strin:=strin+paramstr(i); {Zwischenspeicher = Zw.Speicher + aktueller Parameter}
    end;
    writeln(temp,strin); {temp ist die temporäre auslagerungsdatei; Schreibe in temp eine neue Zeile mit dem Inhalt (strin)}
    if i<paramcount then goto 99; {wenn i kleiner als die Gesamtanzahl an Paramtern ist, dann gehe zu label 99}
    closefile(temp); {Schließe die Temporäre Datei}
   {Überprüfung ende} 
    if GetLastError = ERROR_ALREADY_EXISTS then halt; {Wenn das Program schon geöffnet ist, schließe es (nachdem die temporäre Datei geschrieben wurde)}
So Hui
hoffe ich konnte dir etwas helfen

Luckie 23. Mär 2005 23:07

Re: Registry - FileExtensions eintragen
 
Zitat:

Zitat von Jarmen_Kell
Das Problem an der Sache ist nur, dass immer nur ein Dateiname übergeben wird.
Vermutlich, weil normalerweise für jede Datei das Prog neu gestartet wird. Dies wird allerdings durch die Mutex gleich wieder gekillt.
Also muss ich jetzt versuchen, dass vor der "Vernichtung" die Parameter an die Haupt-App übergeben werden.

Genau und das könnte man mit WM_COPYDATA machen. Oder man nimmt die Unit von Nico: http://www.luckie-online.de/Delphi/Importe/Nico/

Jarmen_Kell 24. Mär 2005 10:12

Re: Registry - FileExtensions eintragen
 
Also die Unit von Nico ist mir ehrlich gesagt irgendwie zu kompliziert.
Ich kann das natürlich einfach alles kopieren und in mein Prog einfügen - vermutlich ginge es auch, aber ich wills ja auch schon irgendwie verstehen (:

Ich will nicht auch irgend ein Copy-n-Paste-Prog haben, bei dem ich das meißte nicht mal selber verstehe ;)

Aber die Lösung von Gregg klingt für mich nachvollziehbar.
Die Frage ist jetzt nur, wie ich das bereits aktive Prog dazu bringe, zu bemerken, dass die Temp-Datei jetzt von einer anderen Instanz geändert wurde.

Gregg 24. Mär 2005 12:23

Re: Registry - FileExtensions eintragen
 
Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
var j,groesse:integer;
    fmp:TFileStream;
    s:string;
    i:integer;
label 1,3;

begin
  if ((label1.caption<>'Verzeichnis') or fileexists(extractfiledrive(paramstr(0))+'\Mediaplayer_System\temp.dat')) and (mediaplayer1.error=0) then
  begin
  if fileexists(extractfiledrive(paramstr(0))+'\Mediaplayer_System\temp.dat') then {Überprüfe ob die temporäre Datei existiert und wenn ja dann}
   begin
    memo1.lines.loadfromfile(extractfiledrive(paramstr(0))+'\Mediaplayer_System\temp.dat'); {Der Inhalt der Playlist wird der inhalt der temporären Datei übergeben}
    listbox1.items:=memo1.lines;
    deletefile(extractfiledrive(paramstr(0))+'\Mediaplayer_System\temp.dat'); {lösche die temporäre Datei}
 {...Nochn paar andere Einstelungen...}
  playbutton.glyph:=pausebutton.glyph;
  if playlistnamen.checked=false then for i:=0 to memo1.lines.count-1 do listbox1.items[i]:=extractfilename(listbox1.items[i]);
  listbox1.sorted:=false;
  listbox1.itemindex:=0;
  zaehler:=0;
  maxlied:=memo1.Lines.count-1;
  Label1.caption:=extractfilename(memo1.lines[0]);
   mediaplayer1.close;
   mediaplayer1.filename:=memo1.lines[0];
   FillID3TagInformation(mediaplayer1.filename,title,artist,album,year,comment,genre);
   mediaplayer1.open;
   trackbar1.max:=mediaplayer1.length;
   gauge1.maxvalue:=mediaplayer1.length;
   gesamtzeitsek:=(mediaplayer1.length div 1000);
   gesamtzeitmin:=0;
   while (gesamtzeitsek>=60) do
    begin
     gesamtzeitsek:=gesamtzeitsek-60;
     gesamtzeitmin:=gesamtzeitmin+1;
    end;
   if gesamtzeitsek<10 then gesamtzeit.caption:=inttostr(gesamtzeitmin)+':0'+inttostr(gesamtzeitsek)
   else gesamtzeit.caption:=inttostr(gesamtzeitmin)+':'+inttostr(gesamtzeitsek);
   mediaplayer1.play;
  end;
Ich überprüfe im Intervall von einer Sekunde mit einem OnTimer Event

Jarmen_Kell 24. Mär 2005 17:14

Re: Registry - FileExtensions eintragen
 
Ja ok ist zwar natürlich weitaus unprofessioneller, aber das versteh' ich ^^

Kann ich ja sonst später immernoch durch das andere ersetzen.
Danke
Auch den anderen - gute Ratschläge, aber ich bin vermutlich einfach noch nicht weit genug!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:13 Uhr.
Seite 2 von 2     12   

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