ParamCount immer 0

Antworten
reneka
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

Beitrag von reneka »

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?
MAC OS 10.10.5 / Lazarus 1.4.4 / FPC 2.6.4

Mathias
Beiträge: 4867
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ParamCount immer 0

Beitrag von Mathias »

Ich kenne den Mac nicht, aber vielleicht hilf dir dies weiter:

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 gün
Mit Java und C/C++ sehe ich rot

mischi
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

Beitrag von mischi »

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
MiSchi macht die fink-Pakete

reneka
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

Beitrag von reneka »

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: 142
Registriert: Mo 20. Okt 2008, 20:50
OS, Lazarus, FPC: Mac OS X 10.4-10.14, Windows 2000-8, SUSE, Ubuntu, Raspbian (L 2.0.6, FPC 3.0.4)
CPU-Target: PowerPC, Intel, ARM
Wohnort: Hattingen, NRW
Kontaktdaten:

Re: ParamCount immer 0

Beitrag von jwdietrich »

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.

mischi
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

Beitrag von mischi »

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?
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.
MiSchi macht die fink-Pakete

mschnell
Beiträge: 3410
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

Beitrag von mschnell »

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

reneka
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

Beitrag von reneka »

mischi hat geschrieben:"open -a deinProgram bild1.jpg"

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.
MAC OS 10.10.5 / Lazarus 1.4.4 / FPC 2.6.4

reneka
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

Beitrag von reneka »

jwdietrich hat geschrieben:Wichtig ist, dass in der Info.plist-Datei unter dem Schlüssel CFBundleDocumentTypes die richtigen Typen eingetragen sind.

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 übergeben :(
MAC OS 10.10.5 / Lazarus 1.4.4 / FPC 2.6.4

mischi
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

Beitrag von mischi »

reneka hat geschrieben:
jwdietrich hat geschrieben:Wichtig ist, dass in der Info.plist-Datei unter dem Schlüssel CFBundleDocumentTypes die richtigen Typen eingetragen sind.

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 übergeben :(

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.
MiSchi macht die fink-Pakete

Antworten