ParamCount immer 0
-
- Beiträge: 7
- Registriert: Do 3. Mär 2016, 09:25
- OS, Lazarus, FPC: MAC OS 10.10.5 / Lazarus 1.4.4 / FPC 2.6.4
- CPU-Target: 64Bit
ParamCount immer 0
Ich möchte mein Programm auch mit einem Parameter (Filenamen) starten. Unter Windows funktioniert es, aber auf dem MAC nicht.
Unter Start -> Startparameter.. kann ich eintragen was ich will. Auch ein Klick auf meine Datei und von dort .. "Öffnen mit" lässte den Counter auf 0.
Gelesen wird in OnActivate. Woran kann es liegen?
Unter Start -> Startparameter.. kann ich eintragen was ich will. Auch ein Klick auf meine Datei und von dort .. "Öffnen mit" lässte den Counter auf 0.
Gelesen wird in OnActivate. Woran kann es liegen?
MAC OS 10.10.5 / Lazarus 1.4.4 / FPC 2.6.4
-
- Beiträge: 6910
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: ParamCount immer 0
Ich kenne den Mac nicht, aber vielleicht hilf dir dies weiter:
Wie sieht es mit diesem Mini-Programm aus ?
Kommt hier auch nichts ?
Wie sieht es mit diesem Mini-Programm aus ?
Kommt hier auch nichts ?
Code: Alles auswählen
program Project1;
begin
WriteLn('Anz Parameter: ', ParamCount);
WriteLn(ParamStr(1));
ReadLn;
end.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 206
- Registriert: Di 10. Nov 2009, 18:49
- OS, Lazarus, FPC: macOS, 10.13, lazarus 1.8.x, fpc 3.0.x
- CPU-Target: 32Bit/64bit
Re: ParamCount immer 0
Vermutlich wird das mit dem Eintragen eines Startparameters unter Mac OS X nicht unterstützt, weil das, wenn überhaupt, nicht so einfach ist, beim Doppelklick einen Parameter zu übergeben. Vielleicht kann man da etwas über die Datei Info.plist machen oder man muss einen Wrapper mit einem Shell-Skript erstellen. Die einzige "direkte" Möglichkeit, die ich kenne, ist das Aufrufen des Binary im App-Bundle aus dem Terminal. Bei Lazarus würde das so aussehen:
YourPrompt$:> Lazarus.app/Contents/MacOS/lazarus YourParameter
YourPrompt$:> Lazarus.app/Contents/MacOS/lazarus YourParameter
MiSchi macht die fink-Pakete
-
- Beiträge: 7
- Registriert: Do 3. Mär 2016, 09:25
- OS, Lazarus, FPC: MAC OS 10.10.5 / Lazarus 1.4.4 / FPC 2.6.4
- CPU-Target: 64Bit
Re: ParamCount immer 0
Ich glaube, ich hatte mich falsch ausgedrückt. Mein Ziel ist es, eine Datei (bild1.jpg) per "Öffnen mit" als Parameter an mein Programm zu übergeben / damit zu starten. Unter Windows (Delphi) funktioniert das auch einwandfrei über die Parameterliste. Nur auf dem MAC läuft das nicht. Ich denke mal, dass der App Container das nicht durchreicht. Es muss aber gehen, andere Apps können das ja auch. Muss da noch etwas "konfiguriert" werden?
MAC OS 10.10.5 / Lazarus 1.4.4 / FPC 2.6.4
- jwdietrich
- Beiträge: 173
- Registriert: Mo 20. Okt 2008, 20:50
- OS, Lazarus, FPC: macOS 10.4-14.1, Windows 2000-11, Raspbian (L 3.7.0, FPC 3.2.2)
- CPU-Target: PowerPC, Intel, ARM
- Wohnort: Hattingen, NRW
- Kontaktdaten:
Re: ParamCount immer 0
Eigentlich sollte macOS den Dateinamen automatisch übermitteln, der Weg über ParamCount wird gar nicht benötigt. Wichtig ist, dass in der Info.plist-Datei unter dem Schlüssel CFBundleDocumentTypes die richtigen Typen eingetragen sind.
-
- Beiträge: 206
- Registriert: Di 10. Nov 2009, 18:49
- OS, Lazarus, FPC: macOS, 10.13, lazarus 1.8.x, fpc 3.0.x
- CPU-Target: 32Bit/64bit
Re: ParamCount immer 0
Ich habe den Eindruck, dass etwas Hintergrundwissen fehlt. Beim Doppelklick oder dem Terminal-Befehl "open" gibt es folgende Abfolge für die Auswahl des Programms. Als erstes wird die Voreinstellung für den Dateityp genommen, bei .jpg z.B. Vorschau. Diese Voreinstellung kann natürlich geändert sein. Es kann aber bei jeder einzelnen Datei ein spezielles Programm eingetragen sein, mit dem es geöffnet wird. Als drittes gibt es noch die Variante "Öffnen mit ..." Im Terminal geht das letzte auch mit dem Parameter "-a". Beispiel "open -a deinProgram bild1.jpg" Die Logik des Adressaten ist gewissermaßen umgedreht. Nicht das Programm bekommt gesagt, welche Datei zu öffnen ist, sondern die Datei bekommt gesagt, mit welchem Program es zu öffnen ist. Vielleicht hilft das.reneka hat geschrieben:Ich glaube, ich hatte mich falsch ausgedrückt. Mein Ziel ist es, eine Datei (bild1.jpg) per "Öffnen mit" als Parameter an mein Programm zu übergeben / damit zu starten. Unter Windows (Delphi) funktioniert das auch einwandfrei über die Parameterliste. Nur auf dem MAC läuft das nicht. Ich denke mal, dass der App Container das nicht durchreicht. Es muss aber gehen, andere Apps können das ja auch. Muss da noch etwas "konfiguriert" werden?
MiSchi macht die fink-Pakete
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: ParamCount immer 0
Mac OS ist BSD Unix und hat also auch eine Kommandozeile.
Da kann man natürlich auch Parameter an ein Programm übergeben (und den output von writetln() sehen).
-Michael
Da kann man natürlich auch Parameter an ein Programm übergeben (und den output von writetln() sehen).
-Michael
-
- Beiträge: 7
- Registriert: Do 3. Mär 2016, 09:25
- OS, Lazarus, FPC: MAC OS 10.10.5 / Lazarus 1.4.4 / FPC 2.6.4
- CPU-Target: 64Bit
Re: ParamCount immer 0
Das war ein Versuch wert, klappt aber auch nicht. Ich bin mit dem Mac System noch nicht so fit. Aber die App ist ja erst einmal ein "Container". Darin befindet sich dann in einem Unterverzeichnis das eigentliche Binary. Ich vermute daher, dass der Container die Datei (oder beliebige andere Parameter) nicht zum Binary durchreicht. Deswegen bleibt ParamCount auch auf Null.mischi hat geschrieben:"open -a deinProgram bild1.jpg"
MAC OS 10.10.5 / Lazarus 1.4.4 / FPC 2.6.4
-
- Beiträge: 7
- Registriert: Do 3. Mär 2016, 09:25
- OS, Lazarus, FPC: MAC OS 10.10.5 / Lazarus 1.4.4 / FPC 2.6.4
- CPU-Target: 64Bit
Re: ParamCount immer 0
Unter CFBundleDocumentTypes habe ich eine Dateierweiterung eingetragen und tatsächlich: Danach erschien unter Öffnen mit beim Rechtsklick auf die Datei mein Programm als Defaultvorschlag. Aber die Datei wird dann per Klick nicht geöffnet. Mein Programm bekommt sie nicht als Parameter übergebenjwdietrich hat geschrieben:Wichtig ist, dass in der Info.plist-Datei unter dem Schlüssel CFBundleDocumentTypes die richtigen Typen eingetragen sind.

MAC OS 10.10.5 / Lazarus 1.4.4 / FPC 2.6.4
-
- Beiträge: 206
- Registriert: Di 10. Nov 2009, 18:49
- OS, Lazarus, FPC: macOS, 10.13, lazarus 1.8.x, fpc 3.0.x
- CPU-Target: 32Bit/64bit
Re: ParamCount immer 0
Ah, jetzt verstehe ich vielleicht um was es geht. Hätte mich ehrlich gesagt gewundert, wenn das bei Apple so gelöst wäre. Ich würde mal die Dokumentation des CoreFoundation Framework nachlesen, ob da etwas dazu steht.reneka hat geschrieben:Unter CFBundleDocumentTypes habe ich eine Dateierweiterung eingetragen und tatsächlich: Danach erschien unter Öffnen mit beim Rechtsklick auf die Datei mein Programm als Defaultvorschlag. Aber die Datei wird dann per Klick nicht geöffnet. Mein Programm bekommt sie nicht als Parameter übergebenjwdietrich hat geschrieben:Wichtig ist, dass in der Info.plist-Datei unter dem Schlüssel CFBundleDocumentTypes die richtigen Typen eingetragen sind.
MiSchi macht die fink-Pakete