AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi InstallExt installiert Dateierweiterung erst nach Neustart
Thema durchsuchen
Ansicht
Themen-Optionen

InstallExt installiert Dateierweiterung erst nach Neustart

Ein Thema von Nils_13 · begonnen am 11. Apr 2007 · letzter Beitrag vom 17. Apr 2007
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#21

Re: InstallExt installiert Dateierweiterung erst nach Neusta

  Alt 13. Apr 2007, 11:03
Zitat von Nils_13:
Das hat mir nicht viel gebracht, da ich somit noch nicht wusste, ob mein Programm für Dateizuweisungen funktioniert oder nicht.
Also dieser Dialog richtet den Eintrag für dein Programm ganz normal ein und als erster/einziger Parameter wird dann die entsprechende Datei übergeben.



PS: hier is z.B. der RealPlayer drauf, aber der gibt zumindestens vorher Bescheid, bevor er die Einträge wieder auf sich umschreibt

PS2: es gbit ja auch noch andere Wege eine Datei zu verknüpfen (über OLE, oder so), aber ich dachte dafür wäre auch irgendein Eintrag dort nötig (das script hätte sowas dann demnach mit löschen müssen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#22

Re: InstallExt installiert Dateierweiterung erst nach Neusta

  Alt 13. Apr 2007, 20:19
Es ist doch noch nicht geschafft:
Wenn man z.B. OGG verknüpft, wird es dennoch mit dem DeliPlayerII geöffnet, da es auf diesen Player zugewiesen ist. Warum ? Das geht doch so nicht

Add:
Mir ist übrigens aufgefallen, dass es nur funktioniert, wenn die entsprechende Datei im gleichen Verzeichniss liegt. Sonst beendet sich das Programm. Das kann ebenfalls nur an der Registry liegen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#23

Re: InstallExt installiert Dateierweiterung erst nach Neusta

  Alt 17. Apr 2007, 13:10
Zitat:
Mir ist übrigens aufgefallen, dass es nur funktioniert, wenn die entsprechende Datei im gleichen Verzeichniss liegt. Sonst beendet sich das Programm. Das kann ebenfalls nur an der Registry liegen.
Also das es nur geht, wenn Datei und Zielprogramm im selben Verzeicnis sind, daß kann eigentlich nicht an der Registry liegen, denn der Explorer ließt dort immer den gleichen Wert aus und übergibt alles auf die selbe Art, egal wo sich Programm und Datei befinden.

Du kannst es ja mal ganz einfach testen.

Erstmal versuchen das Programm per [win] > Ausführen, oder über 'ne BatchFile aufrufen (dort kannst du ja beliebig angeben wo sich was befinden soll.

Und dann nimm z.B. dieses Progrämmchen, benenne es so wie deine EXE und stell es an deren Stelle.
Delphi-Quellcode:
Program Project2;

{$APPTYPE CONSOLE}

Var F: File;

Begin
  WriteLn('Datei: "' + ParamStr(1) + '"');
  WriteLn;
  AssignFile(F, ParamStr(1));
  FileMode := $0040{fmOpenRead or fmShareDenyNone};
  {$I-}
  Reset(F);
  {$I+}
  If IOResult = 0 Then WriteLn('Datei erfolgreich ge”ffnet')
  Else WriteLn('Zugriffsfehler');
  CloseFile(F);
  WriteLn;
  WriteLn('Beenden mit ENTER');
  ReadLn;
End.
Wenn dieses den richtigen Dateinamen incl. Verzeichnis und eine Erfolgreichmeldung anzeigt, dann gibt's mit ANSI keine Probleme.
Ich vermute mal nicht, daß du nicht mit Unicode arbeitest, also sollte dieses ausreichend sein.


Die " sind auch richtig gesetzt?
Zur Sicherheit müssen ja alle Pfade/Dateien darin eingeschlossen sein.


Umgebungsvariablen (sowas wie %WinDir%) hast du nicht verwendet?
Weil dann wäre REG_SZ falsch.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#24

Re: InstallExt installiert Dateierweiterung erst nach Neusta

  Alt 17. Apr 2007, 16:02
Zitat:
Datei: "E:\Musik\irgendwas.ext"
Datei erfolgreich geöffnet
Diese Meldung erhalte ich mit Öffnen Mit und Doppelklick. Nun müsste der Fehler im Code meines zugewiesenen Programms liegen. Ich sehe keinen Fehler, der gleich einen Programmabsturz verursachen könnte, erst recht nicht, dass es nur im Programmverzeichniss funktioniert:
Delphi-Quellcode:
var ffile, FileType : String;
    ArrayIndex : Integer;
begin
  if (ParamCount > 0) and (FileExists(ParamStr(1))) then
  begin
    ffile := ExtractFileName(ParamStr(1));

    FileType := LowerCase(Trim(ExtractFileExt(ParamStr(1))));
    for ArrayIndex := 0 to 13 do
      if FileExt[ArrayIndex] = FileType then
        Break;
    if FileType <> 'then
    begin
      case ArrayIndex of
        // Audio/Video
        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10:
        begin
          AddSingleFile(ffile);
        end;
        // Playlist
        11:
        begin
          LoadFiles(LoadM3U(ffile);
        end;
        12:
        begin
          LoadFiles(LoadASX(ffile);
        end;
        13:
        begin
          LoadFiles(LoadDPL(ffile, nil));
        end;
      end;
    end;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#25

Re: InstallExt installiert Dateierweiterung erst nach Neusta

  Alt 17. Apr 2007, 16:30
also warum es nur im selben Verzeichnis geht ... dat is einfach zu erklären

mit ffile := ExtractFileName(ParamStr(1)); entfernst du die Verzeichnisangabe, weßhalb z.B. AddSingleFile(ffile); nur den Dateinamen bekommt.
Daher wird die Datei im aktuellen Arbeitsverzeichnis gesucht wird, was bei dir rein zufällig das Programmverzeichnis (muß es aber nicht).

Ach ja, meckert Delphi bei dir nicht bei ArrayIndex?
> Variable kann nach Schleifendurchlauf undefiniert sein, oder so

Delphi-Quellcode:
var FileType: String;
    ArrayIndex: Integer;
begin
  if (ParamCount = 0) or not FileExists(ParamStr(1)) then exit;

  FileType := LowerCase(Trim(ExtractFileExt(ParamStr(1))));
  for ArrayIndex := 0 to 13 do
    if FileExt[ArrayIndex] = FileType then
      case ArrayIndex of
        // Playlist
        11: LoadFiles(LoadM3U(ParamStr(1)));
        12: LoadFiles(LoadASX(ParamStr(1)));
        13: LoadFiles(LoadDPL(ParamStr(1), nil));
        // Audio/Video
        else AddSingleFile(ParamStr(1));
      end;
end;
Die Exception könnte zwar irgendwie durch ArrayIndex (innerhalb des Case-Blocks) hervorgerufen werden, aber bei 'nem Integer un dieser unkion eigentlich nich möglich.

Bleibt noch die Möglichkeit, daß die Exception in einer der verwendeten Funktionen/Prozeduren auftritt, z.B. wegen des fehlenden Pfades?
> LoadM3U, LoadASX, LoadDPL, LoadFiles und/oder AddSingleFile



hast schonmal das Programm im Debuger durchlaufen lassen?

unter Menü > Start > Parameter...
bei Parameter
Zitat:
"E:\Musik\irgendwas.ext"
eintragen und dann in Ruhe testen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#26

Re: InstallExt installiert Dateierweiterung erst nach Neusta

  Alt 17. Apr 2007, 16:39
Es gab btw. keine Exeption, das Programm hat sich schon vorher freiwillig beendet Werde den Fehler (ExtractFileName) beseitigen

I am so

Thx.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 08:05 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