![]() |
Programm-Parameter mit Leerzeichen
Hi,
ich lese beim Starten meines Programm die Programm-Parameter aus, um ggf. übergebgene Dateien sofort in mein Programm zu laden - das funktioniert eigentlich auch ganz gut. Doch wenn der Pfad ein Leerzeichen enthält, wie z.B. "C:\Dokumente und Einstellungen\..", dann wird "C:\Dokumente" als erster Parameter erkannt, wodurch ich die Datei mit dem ersten Parameter nicht erreiche. Deshalb hänge ich alle Parameter mit einem Leerzeichen aneinander und haue sie in eine String-Variable, prüfe dann ob die Datei existiert und lade sie dann. Was jemand etwas besseres als alle Parameter hintereinander zu hängen? Gruß Ben |
Re: Programm-Parameter mit Leerzeichen
Hi,
normalerweise reicht es, den Pfad in Anführungszeichen ("Pfad mit Leerzeichen") zu setzen, damit er als ein Paremeter erkannt wird. Oder stammen die Parameter nicht aus eine deiner Anwendungen? :gruebel: |
Re: Programm-Parameter mit Leerzeichen
Ich meinte die Parameterübergabe, wenn ich z.B. a.txt doppelt anklicke.
Ben |
Re: Programm-Parameter mit Leerzeichen
die meint Matze sicher auch,
es geht um die Datei-Verknüpfung (Windows-Explorer -> Ordneroptionen -> Dateitypen) gruss |
Re: Programm-Parameter mit Leerzeichen
Ich habe da "E:\Programmierung\Delphi\...\Project1.exe" ""%1"" eingetragen.
Diesen Eintrag habe ich erzeugen lassen mit ... ![]() Was muss ich da abändern, damit dass so ist, wie ihr das meint? Gruß Ben |
Re: Programm-Parameter mit Leerzeichen
Wenn ich das richtig verstanden hab, dann genauso, wie es dort in der Beschreibung steht, also z.B.:
Delphi-Quellcode:
Du kannst natürlich einiges auch per Variablen/Konstanten übergeben ...
InstallExt('.txt', 'Textdatei', 'benst''s Texteditor',
'C:\Programme\Textedit.exe', '"%1"'); Es könnte z.B 'C:\Programme\Textedit.exe' durch ParamStr(0) ersetzt werden, wenn das Programm, womit die Verknüpfung erstellt wird, identisch mit dem Programm ist, welches aufgerufen werden soll. |
Re: Programm-Parameter mit Leerzeichen
Ich mache das ja genau so:
Delphi-Quellcode:
Aber wie bekomme ich das hin, dass der Parameter in Anführungszeichen übermittelt und trotz Leerzeichen als ein Parameter erkannt wird?
InstallExt('.chess', 'Schach-Speicherstand', 'Schach', ParamStr(0), '"%1"',0)
(So ist es nämlich nicht EIN Parameter und ich muss ihn wie oben beschrieben zusammensetzen.) Ben |
Re: Programm-Parameter mit Leerzeichen
Ändere den Registy-Eintrag so ab, daß der Parameter %1 links und rechts nur von einem doppelten Anführungszeichen eingefaßt wird:
Delphi-Quellcode:
Gruß Hawkeye
"E:\Programmierung\Delphi\...\Project1.exe" "%1"
|
Re: Programm-Parameter mit Leerzeichen
habt Recht, so wie ich das sehe, ist da ein Fehler drin, ändere die Zeile
Delphi-Quellcode:
in
Reg.WriteString('', Format('"%s" "%s"', [OpenWith, ParamString]));
Delphi-Quellcode:
, dann geht es so wie es beschrieben wurde,
Reg.WriteString('', Format('"%s" %s', [OpenWith, ParamString]));
oder übergibt es so
Delphi-Quellcode:
also ohne die ".
InstallExt('.chess', 'Schach-Speicherstand', 'Schach', ParamStr(0), '%1',0);
Wobei ich dir zu ersterem raten würde, denn wenn man mehrere Parameter übergeben haben möchte, wird's etwas schwierig ... mir würde jedenfalls folgendes eigenartig vorkommen :roll:
Code:
InstallExt('.chess', 'Schach-Speicherstand', 'Schach', ParamStr(0), [color=#ff0000][b]'%1" "%2'[/b][/color],0);
|
Re: Programm-Parameter mit Leerzeichen
That's it!
Danke, funst super! Ben |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 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