Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Firemonkey iOS open URL (https://www.delphipraxis.net/168504-firemonkey-ios-open-url.html)

alf2020 25. Mai 2012 10:02

Firemonkey iOS open URL
 
Hallo zusammen,

ich möchte gerne aus meiner iPhone - App mit Delphi XE2 / Firemonkey (update 4)eine URL öffnen, wenn ich auf einen Button klicke.

ich habe auch schon ein kleines Beispiel ausprobiert:

Delphi-Quellcode:
unit Unit1;
 
{$IFDEF FPC}
 {$mode objfpc}{$H+}
 {$modeswitch objectivec1}
 {$ENDIF}
 
interface
 
uses
 SysUtils, Types, UITypes, Classes, Variants, FMX_Types, FMX_Controls, FMX_Forms,
 FMX_Dialogs
 {$IFDEF FPC}
 , iPhoneAll
 {$ENDIF}
 ;
 
type
 TForm1 = class(TForm)
 Button1: TButton;
 procedure Button1Click(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
 
var
 Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
procedure TForm1.Button1Click(Sender: TObject);
 begin
 // Open a URL
 {$IFDEF FPC}
 UIApplication.sharedApplication.openUrl(NSUrl.URLWithString(NSSTR(PChar(’[url]http://blogs.embarcadero.com/ao’))));[/url]
 {$ENDIF}
 end;
 
end.

Der Delphi Compiler findet keinen Fehler. Anwendung in Windows läuft.
Exportiere ich das nach Mac (Xcode) und starte den Simulator, dann bricht der XCode compiler ab und
sagt das er Fehler gefunden hat.
Auch direkt mit dem iPhone klappt es nicht. Bevor das App auf das iPhone übertragen wird
bricht Xcode mit Fehlermeldung ab.

Könnt Ihr helfen?

Bernhard Geyer 25. Mai 2012 10:04

AW: Firemonkey iOS open URL
 
Zitat:

Zitat von alf2020 (Beitrag 1168031)
... und sagt das er Fehler gefunden hat.

Und welche?

daywalker9 25. Mai 2012 10:59

AW: Firemonkey iOS open URL
 
Aus

Delphi-Quellcode:
UIApplication.sharedApplication.openUrl(NSUrl.URLW ithString(NSSTR(PChar(’http://blogs.embarcadero.com/ao’))));

müsste


Delphi-Quellcode:
UIApplication.sharedApplication.openUrl(NSUrl.URLW ithString(NSSTR(PChar('http://blogs.embarcadero.com/ao'))));
werden.

alf2020 26. Mai 2012 22:49

AW: Firemonkey iOS open URL
 
Danke werde ich mal ausprobieren. Fehler
Lieder ich nach aus Xcode.

himitsu 26. Mai 2012 23:20

AW: Firemonkey iOS open URL
 
Zitat:

Zitat von alf2020 (Beitrag 1168258)
Danke werde ich mal ausprobieren. Fehler
Lieder
ich nach aus Xcode.

Bitte nochmal auf deutsch. Ich versteh grade nur Bahnhof.


Aber mal eine Frage so nebenbei.
Wieso sieht der Code für mich mehr nach Lazarus, als nach Delphi aus?
(FPC und lfm statt fmx/dfm)

Speziell die eine Zeile
Zitat:

Delphi-Quellcode:
UIApplication.sharedApplication.openUrl(NSUrl.URLW ithString(NSSTR(PChar(’http://blogs.embarcadero.com/ao’))));

ist da vollkommen egal, da sie eh nicht kompiliert wird, weil Delphi FPC natürlich nicht kennt.

Nichts desto trotz ist ’ natürlich falsch, da in Delphi die Strings nur mit ' definiert werden.


Aber solange du uns nicht endlich mal die Fehlermeldungen nennst, kann dir eh keiner helfen.
In Delphi kann man Strg+C in den (Fehler)-Dialogen und bei den Compilermeldungen verwenden.



[edit]
Ist ja witzig.
Klang immer so, als wenn FireMonkey eine Embarcadero-Erfindung währe, aber warum sind dann auch deren Quellcodes mit FPC-Compilerschaltern voll?
Und was ist eigentlich der Unterschied zwischen FMX.Types und FMX_Types.
Das sind za zwei verschiedene Units ... OK, die sehn ähnlich aus, aber z.B. interfaces haben anderes IDs. :gruebel:

Delphi-Quellcode:
// aus rad studio\9.0\source\fmi\FMX.Types.pas

  IFreeNotification = interface
    ['{FEB50EAF-A3B9-4b37-8EDB-1EF9EE2F22D4}']
    procedure FreeNotification(AObject: TObject);
  end;

// aus rad studio\9.0\source\fmx\FMX_Types.pas

  IFreeNotification = interface
    ['{63F90BB9-3889-4B25-83AF-A17A7A6250AE}']
    procedure FreeNotification(AObject: TObject);
  end;
[edit2]
ahh, _ ist WideString und . ist String/UnicodeString

und ich glaub mir fällt wieder was ein ... Emba hat's ja nicht geschafft einen eigenen Compiler für OSx/iOS zu schreiben. :roll:

mkinzler 27. Mai 2012 07:11

AW: Firemonkey iOS open URL
 
Zitat:

Wieso sieht der Code für mich mehr nach Lazarus, als nach Delphi aus?
Für iOS verwendet EM FPC als Compiler, da das ARM backend noch nicht fertig war.

Zitat:

Klang immer so, als wenn FireMonkey eine Embarcadero-Erfindung währe, aber warum sind dann auch deren Quellcodes mit FPC-Compilerschaltern voll?
Wurde auf Basis von VGScene entwicklet, für welches es neben der VCL auch eine Lazarusversion für Linux gab.

sansimarkus 27. Mai 2012 11:04

AW: Firemonkey iOS open URL
 
Zitat:

Zitat von himitsu (Beitrag 1168259)
Aber mal eine Frage so nebenbei.
Wieso sieht der Code für mich mehr nach Lazarus, als nach Delphi aus?
(FPC und lfm statt fmx/dfm)

Eine iOS App wird nur in Delphi "verfasst" - compiliert wird das ganze mittels XCode und das wiederrum bemüht für den freepascalcompiler. Der Grund dafür ist, dass Apple keine Apps akzeptiert die nicht mit XCode kompiliert wurden (auch wenn XCode an sich nur den FPC anwirft).

Zitat:

Zitat von himitsu (Beitrag 1168259)
Aber solange du uns nicht endlich mal die Fehlermeldungen nennst, kann dir eh keiner helfen.
In Delphi kann man Strg+C in den (Fehler)-Dialogen und bei den Compilermeldungen verwenden.

Den Fehler findet man in der relativ sinnfrei gestalteten XCode Fehlerkonsole, die rot-markierten Zeilen (die "Fehler") muss man ignorieren und etwas höher scrollen wo dann die tatsächliche Fehlermeldung vom FPC steht (stehen könnte/müsste/sollte). Der FPC bricht allerdings im Gegensatz zu Delphi beim ersten Fehler direkt ab und gibt nur den ersten gefunden Fehler aus, egal wie sinnfrei dieser auch sein mag. XCode versucht dann die nicht-existente kompilierte Unit einzubinden und wirft dann dort einen Fehler (file not found) - VORSICHT: wenn eine delphi-unit nicht kompiliert werden konnte und es zufällig die letzte in der Reihenfolge ist und diese bereits schon einmal erfolgreich kompiliert wurde, dann nimmt XCode die alte und wirft erst garkeinen Fehler. Also immer schön den Compilerlog offenhalten.


Zitat:

Zitat von himitsu (Beitrag 1168259)
Ist ja witzig.
Klang immer so, als wenn FireMonkey eine Embarcadero-Erfindung währe, aber warum sind dann auch deren Quellcodes mit FPC-Compilerschaltern voll?
Und was ist eigentlich der Unterschied zwischen FMX.Types und FMX_Types.
Das sind za zwei verschiedene Units ... OK, die sehn ähnlich aus, aber z.B. interfaces haben anderes IDs. :gruebel:

[edit2]
ahh, _ ist WideString und . ist String/UnicodeString

Abgesehen davon kann XCode (oder der FPC) scheinbar keine units mit einem Punkt im Namen kompilieren.



Zitat:

Zitat von himitsu (Beitrag 1168259)
und ich glaub mir fällt wieder was ein ... Emba hat's ja nicht geschafft einen eigenen Compiler für OSx/iOS zu schreiben. :roll:

Für OS X kompiliert Delphi selbst (auf Windows), für iOS wäre es zwecklos, da im AppStore nur Apps landen die mit XCode kompiliert wurden.




Ich beschäftige mich jetzt schon ne Weile mit App-Entwicklung in Delphi und jedes einzelne Programm, dass in für das Kompilieren und Entwickeln beötigt wird, hat mindestens einen Fehler wo man sich bei gesundem Verstand nur an den Kopf fassen kann.

alf2020 27. Mai 2012 16:28

AW: Firemonkey iOS open URL
 
Fehlermeldung:

cp: /Users/jsokol/Library/Developer/Xcode/DerivedData/BisFormular-gwqjpjnoaxmgwgcwsnluserurrob/Build/Products/Release-iphoneos/BisFormular.app/BisFormular.dSYM/Contents/Info.plist: No such file or directory
cp: /Users/jsokol/Library/Developer/Xcode/DerivedData/BisFormular-gwqjpjnoaxmgwgcwsnluserurrob/Build/Products/Release-iphoneos/BisFormular.app/BisFormular.dSYM/Contents/Resources/DWARF/BisFormular: No such file or directory
rm: /Users/jsokol/Library/Developer/Xcode/DerivedData/BisFormular-gwqjpjnoaxmgwgcwsnluserurrob/Build/Products/Release-iphoneos/BisFormular.app/BisFormular.dSYM/Contents/Info.plist: No such file or directory
rm: /Users/jsokol/Library/Developer/Xcode/DerivedData/BisFormular-gwqjpjnoaxmgwgcwsnluserurrob/Build/Products/Release-iphoneos/BisFormular.app/BisFormular.dSYM/Contents/Resources/DWARF/BisFormular: No such file or directory
rmdir: /Users/jsokol/Library/Developer/Xcode/DerivedData/BisFormular-gwqjpjnoaxmgwgcwsnluserurrob/Build/Products/Release-iphoneos/BisFormular.app/BisFormular.dSYM/Contents/Resources/DWARF: No such file or directory
rmdir: /Users/jsokol/Library/Developer/Xcode/DerivedData/BisFormular-gwqjpjnoaxmgwgcwsnluserurrob/Build/Products/Release-iphoneos/BisFormular.app/BisFormular.dSYM/Contents/Resources: No such file or directory
rmdir: /Users/jsokol/Library/Developer/Xcode/DerivedData/BisFormular-gwqjpjnoaxmgwgcwsnluserurrob/Build/Products/Release-iphoneos/BisFormular.app/BisFormular.dSYM/Contents: No such file or directory
rmdir: /Users/jsokol/Library/Developer/Xcode/DerivedData/BisFormular-gwqjpjnoaxmgwgcwsnluserurrob/Build/Products/Release-iphoneos/BisFormular.app/BisFormular.dSYM: No such file or directory
Showing first 200 notices only

sansimarkus 30. Mai 2012 09:51

AW: Firemonkey iOS open URL
 
so sieht es idR. aus wenn der FPC einen fatal error produziert und dementsprechend abbricht - wodurch dann deine Fehlermeldungen á la File not Found kommen. Oder du eine neue Unit angelegt hast und dann vergessen hast dpr2xcode.exe ausuzführen. Jedesmal wenn du eine neue Unit anlegst oder einbindest musst du das projekt mittels dpr2xcode neu exportieren.

edit: etwas höher im xcode errorlog findest du die ausgabe vom FPC falls es am FPC liegt - ansonsten versuchen erneut mit dpr2xcode dein projekt zu konvertieren und in XCode neu öffnen.

JamesTKirk 30. Mai 2012 12:51

AW: Firemonkey iOS open URL
 
Zitat:

Zitat von sansimarkus (Beitrag 1168279)
Der FPC bricht allerdings im Gegensatz zu Delphi beim ersten Fehler direkt ab und gibt nur den ersten gefunden Fehler aus, egal wie sinnfrei dieser auch sein mag.

Mit den Standardeinstellungen bricht FPC nur bei Syntaxfehlern sofort ab, ansonsten versucht er so gut es geht noch weiterzumachen, damit eventuelle weitere Fehler gefunden werden können (dass hierbei auch Folgefehler vorheriger Fehler enthalten sein können, ist fast schon klar). Dabei gibt es eine Maximalzahl an Fehlern, welche im Standard 50 ist, nach denen der Compiler dann denoch abbricht. Diese kann mit dem Kommandozeilenparameter "-SeZAHL" geändert werden.

Hinweis: Die Hilfe ("-h") erwähnt hier, dass der Standard 1 ist, aber dies trifft nur zu, wenn "-Se" ohne weitere Parameter (also ohne eine Zahl, "w", "n" und "h") angegeben wurde.

Gruß,
Sven


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz