File an Exe übergeben
File an Exe übergeben
Hallo zusammen!
Erstmal ein gutes neues Jahr!
Ich hätte mal eine Frage, wie ich eine Textdatei an mein EXE-File schicken kann (im Explorer mit Senden an oder öffnen mit) und dieses File dann in meinem Programm verarbeiten kann. Wo finde ich den Parameter ob eine Datei übergebenen wurde? Und den Pfad der Datei.
Grüße Michael
Erstmal ein gutes neues Jahr!
Ich hätte mal eine Frage, wie ich eine Textdatei an mein EXE-File schicken kann (im Explorer mit Senden an oder öffnen mit) und dieses File dann in meinem Programm verarbeiten kann. Wo finde ich den Parameter ob eine Datei übergebenen wurde? Und den Pfad der Datei.
Grüße Michael
-
- Beiträge: 955
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: File an Exe übergeben
Der Dateipfad ist als ParamStr(1) zu finden (es sei denn in der Registry wurde was anderes für Öffnen mit angegeben, aber dazu muss das in der Registry manuell angelegt werden).
FPC Compiler Entwickler
Re: File an Exe übergeben
Okay, schon mal vielen Dank für Info. Ehrlich gesagt kann ich jetzt damit jetzt nicht wirklich was anfangen. Was muss ich in Lazarus tun, um an diese Info zu kommen? Wie kann ich den Wert auslesen?
Re: File an Exe übergeben
Was verstehst du denn daran nicht?
Der gesuchte Pfad wird von der Funktion ParamStr(1) zurückgegeben, wie PascalDragon schon sagte.
https://www.freepascal.org/docs-html/rt ... amstr.html
https://www.freepascal.org/docs-html/rt ... count.html
Der gesuchte Pfad wird von der Funktion ParamStr(1) zurückgegeben, wie PascalDragon schon sagte.
https://www.freepascal.org/docs-html/rt ... amstr.html
https://www.freepascal.org/docs-html/rt ... count.html
Re: File an Exe übergeben
Im Explorer, als Verknüpfen, o.ä. startest du dein Programm " deinprogramm.exe 'pfadzurdatei.txt' "
deinprogramm.exe kann dann mit ParamStr() den Pfad (pfadzurdatei.txt) lesen. Und mit diesen kannst du dann weiterarbeiten (Datei auslesen o.ä.). Bei den Parametern gilt es einiges zu beachten. Einlesen ist sinnvoll.
Wenn du mittels "Öffnen mit..." arbeiten willst, musst du in Windows das in den Einstellungen angeben. Je nachdem welches Windows du hast... Glaube bei Win 10 ist es bei Einstellungen/System/Standard-Apps
Dein Programm muss aber trotzdem mit ParamStr() erst auslesen und weiterverarbeiten...
deinprogramm.exe kann dann mit ParamStr() den Pfad (pfadzurdatei.txt) lesen. Und mit diesen kannst du dann weiterarbeiten (Datei auslesen o.ä.). Bei den Parametern gilt es einiges zu beachten. Einlesen ist sinnvoll.
Wenn du mittels "Öffnen mit..." arbeiten willst, musst du in Windows das in den Einstellungen angeben. Je nachdem welches Windows du hast... Glaube bei Win 10 ist es bei Einstellungen/System/Standard-Apps
Dein Programm muss aber trotzdem mit ParamStr() erst auslesen und weiterverarbeiten...
- Niesi
- Lazarusforum e. V.
- Beiträge: 587
- Registriert: So 26. Jun 2016, 19:44
- OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
- Kontaktdaten:
Re: File an Exe übergeben
Moin,
dazu habe ich auch mal eine Frage: wie "kompatibel" ist das zu anderen OS oder anderen Windows-Versionen? (Du schriebst: "Je nachdem welches Windows du hast... ")
Herzlichen Gruß
Niesi
dazu habe ich auch mal eine Frage: wie "kompatibel" ist das zu anderen OS oder anderen Windows-Versionen? (Du schriebst: "Je nachdem welches Windows du hast... ")
Herzlichen Gruß
Niesi
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: File an Exe übergeben
Das Öffnen über die Datei via 'öffnen mit ...` ist unabhängig von deinem Programm, wird aber je nach BS an unterschiedlichen Stellen eingerichtet. Funktionieren müsste es immer. (Damit ist die Funktion gemein, welche in Abhängigkeit der Dateiendung ein Programm startet).
Du musst in deinem Programm lediglich den Parameter (ParamStr) verarbeitten.
Du musst in deinem Programm lediglich den Parameter (ParamStr) verarbeitten.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
-
- Beiträge: 955
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: File an Exe übergeben
Wie geschrieben wurde ist der Mechanismus über ParamStr eigentlich immer der gleiche (unabhängig vom Betriebssystem; unter Windows gäbe es aber zusätzlich noch das von Win3.11 stammende DDE, falls man sich wirklich quälen möchteNiesi hat geschrieben: Sa 2. Jan 2021, 01:50 dazu habe ich auch mal eine Frage: wie "kompatibel" ist das zu anderen OS oder anderen Windows-Versionen? (Du schriebst: "Je nachdem welches Windows du hast... ")

FPC Compiler Entwickler
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: File an Exe übergeben
Fallstricke sind noch:
- mehrere Parameter übergeben
- Paramter mit Sonderzeichen übergeben
- Dateinamen und Pfade mit Leerzeichen übergeben vs. mehrere Parameter übergeben
- Dateinamen in Anführungszeichen oder ohne
Lazarus / FPC konnte man lange nicht in "C:\Programme" installieren, weil das auf "C:\Program Files" verweist und der Compiler regelmäßig am Leerzeichen im Pfad gescheitert ist. Ebenso machten Projekte in "Eigene Dateien" Ärger.
Also auch "große" Programme haben damit ihre Problemchen.
- mehrere Parameter übergeben
- Paramter mit Sonderzeichen übergeben
- Dateinamen und Pfade mit Leerzeichen übergeben vs. mehrere Parameter übergeben
- Dateinamen in Anführungszeichen oder ohne
Lazarus / FPC konnte man lange nicht in "C:\Programme" installieren, weil das auf "C:\Program Files" verweist und der Compiler regelmäßig am Leerzeichen im Pfad gescheitert ist. Ebenso machten Projekte in "Eigene Dateien" Ärger.
Also auch "große" Programme haben damit ihre Problemchen.
-
- Beiträge: 955
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: File an Exe übergeben
Bitte die Schuld auf den schieben, der tatsächlich Schuld ist: manche der GNU Utilities, die bei FPC mitgeliefert werden, sind an den Leerzeichen gescheitert (ich glaube es war (bzw. ist noch immer) windres). Weder FPC noch Lazarus selbst haben Probleme mit Leerzeichen.Timm Thaler hat geschrieben: Sa 2. Jan 2021, 16:27 Lazarus / FPC konnte man lange nicht in "C:\Programme" installieren, weil das auf "C:\Program Files" verweist und der Compiler regelmäßig am Leerzeichen im Pfad gescheitert ist. Ebenso machten Projekte in "Eigene Dateien" Ärger.
FPC Compiler Entwickler
Re: File an Exe übergeben
Vielen Dank!
Jetzt hab ich es Verstanden. ParamStr() ist eine Systemfunktion die ich einfach aufrufen kann.....
Jetzt hab ich es Verstanden. ParamStr() ist eine Systemfunktion die ich einfach aufrufen kann.....
-
- Beiträge: 955
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: File an Exe übergeben
Systemfunktion ist etwas übertrieben... Sie ist Teil der Runtime Library von Free Pascal und auf jedem System verfügbar. Aber die eigentlichen Betriebssysteme kochen da ihr eigenes Süppchen, was diese Funktion eben abstrahiert.
FPC Compiler Entwickler