ParamCount immer 0

ParamCount immer 0

Beitragvon reneka » 16. Jun 2016, 21:50 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?
MAC OS 10.10.5 / Lazarus 1.4.4 / FPC 2.6.4
reneka
 
Beiträge: 7
Registriert: 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
Nach oben

Beitragvon Mathias » 16. Jun 2016, 22:13 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 ?

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
Mathias
 
Beiträge: 4516
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon mischi » 17. Jun 2016, 09:21 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
MiSchi macht die fink-Pakete
mischi
 
Beiträge: 206
Registriert: 10. Nov 2009, 18:49
OS, Lazarus, FPC: macOS, 10.13, lazarus 1.8.x, fpc 3.0.x | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon reneka » 19. Jun 2016, 18:07 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
reneka
 
Beiträge: 7
Registriert: 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
Nach oben

Beitragvon jwdietrich » 19. Jun 2016, 20:35 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.
jwdietrich
 
Beiträge: 139
Registriert: 20. Okt 2008, 19:50
Wohnort: Hattingen, NRW
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
Nach oben

Beitragvon mischi » 20. Jun 2016, 07:23 Re: ParamCount immer 0

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
mischi
 
Beiträge: 206
Registriert: 10. Nov 2009, 18:49
OS, Lazarus, FPC: macOS, 10.13, lazarus 1.8.x, fpc 3.0.x | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon mschnell » 20. Jun 2016, 08:07 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
mschnell
 
Beiträge: 3394
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon reneka » 20. Jun 2016, 21:02 Re: ParamCount immer 0

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: 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
Nach oben

Beitragvon reneka » 20. Jun 2016, 21:19 Re: ParamCount immer 0

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
reneka
 
Beiträge: 7
Registriert: 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
Nach oben

Beitragvon mischi » 21. Jun 2016, 07:35 Re: ParamCount immer 0

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
mischi
 
Beiträge: 206
Registriert: 10. Nov 2009, 18:49
OS, Lazarus, FPC: macOS, 10.13, lazarus 1.8.x, fpc 3.0.x | 
CPU-Target: 32Bit/64bit
Nach oben

• Themenende •

Zurück zu MacOS



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron
porpoises-institution
accuracy-worried