![]() |
[gelöst] Verknüpfung mit Dateiendung und Leerzeichen
Hallo,
nach Fertigstellung meines Programmes wollte ich es in Windows (bei mir derzeit 10.0.16288) integrieren. Dazu sollte die von mir verwendete Dateiendung mit der exe-Datei ![]() Beim ersten Mal klappt das auch ganz gut. Aber ich muss/will die Funktion ja auch mehrfach testen. Und hier beginnt mein Problem: Nach dem ersten Ausführen von
Delphi-Quellcode:
erhalte ich mittels
InstallExt(...);
Delphi-Quellcode:
komplette Pfade inkl. Leerzeichen.
ParamStr(1)
Aber nach dem 2. Durchlauf von
Delphi-Quellcode:
werden plötzlich die Leerzeichen als Trenner erkannt und die Dateinamen zerstückelt; also z.B.
InstallExt(...);
Delphi-Quellcode:
und
ParamStr(1) = 'Z:\RAD'
Delphi-Quellcode:
.
ParamStr(2) = 'Studio\_Programme\Datei.Verknüpfung\test.pleppo'
Der ursprüngliche Fragesteller hat sich möglicher Weise an ![]() Dort gibt es aber auch eine
Delphi-Quellcode:
(etwas weiter unten). Auch wenn ich diese aurufe, ändert sich das Verhalten nicht.
function UnInstallExt(Extension: string): Boolean;
Kann mir bitte jemand bei der Erhellung behilflich sein? |
AW: Verknüpfung mit Dateiendung und Leerzeichen
Ändere dashier
Delphi-Quellcode:
mal bitte so ab
procedure TForm1.Button1Click(Sender: TObject);
begin if InstallExt('.xyz', 'XYZDatei', 'Tolles Programm', ParamStr(0), '"%1"',0) then Showmessage('Dateiendung konnte erfolgreich registriert werden.'); end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin if InstallExt('.xyz', 'XYZDatei', 'Tolles Programm', '"' + ParamStr(0) + '"', '"%1"',0) then Showmessage('Dateiendung konnte erfolgreich registriert werden.'); end; |
AW: Verknüpfung mit Dateiendung und Leerzeichen
Das InstallExt quoted die Werte doch bereits im \Shell\Open\Command:
Delphi-Quellcode:
Reg.WriteString('', Format('"%s" "%s"', [OpenWith, ParamString]));
Was mich eher wundert, ist der nochmal gequotete ParamStr "%1" beim Aufruf:
Delphi-Quellcode:
InstallExt('.icctmp', 'ICC Verlauf', 'Gespeicherter ICC Verlauf', ParamStr(0), '"%1"',0);
|
AW: Verknüpfung mit Dateiendung und Leerzeichen
Ja, stimmt irgendwie:
Delphi-Quellcode:
Reg.WriteString('', Format('"%s" "%s"', [OpenWith, ParamString]));
Müsste es dann nicht eher so sein?
Delphi-Quellcode:
InstallExt('.icctmp', 'ICC Verlauf', 'Gespeicherter ICC Verlauf', ParamStr(0), '%1',0);
Beides wird beim Schreiben in " gepackt. Dann braucht man es doch nicht in " zu übergeben. Irgendwas ist hier doppeltgemoppelt. |
AW: Verknüpfung mit Dateiendung und Leerzeichen
Zitat:
Ich hatte das Problem schon vorher identifiziert. Mit Regedit hatte ich festgestellt, dass %1 fast immer von " umschlossen ist. In meinem Fall waren es zweimal ". Nachdem ich je eines weglöschte, klappte es auch wieder. Das
Delphi-Quellcode:
hatte ich nicht im Verdacht. Die Funktion war bei mir in eine andere Unit ausgelagert. Und getreu dem Motto: aus den Augen aus dem Sinn, wäre ich da nicht drauf gekommen.
Format('"%s" "%s"', [OpenWith, ParamString]);
|
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