Skip to content

Archiv fuer den Monat Dezember, 2013

30
Dez

C++ Builder + iOS: Versenden von E-Mails

Vielleicht geht es einigen anderen genauso wie mir. Nun kann man endlich mit dem C++ Builder für iOS Programmieren, was richtig cool ist. Manche Sachen sind in den Beispielen schon ganz gut erklärt. Andere wieder nicht. Diese muss man sich dann selbst zusammensuchen. So z. B. beim versenden von E-Mails. Darum möchte ich mein Wissen auch gerne mit euch Teilen.

Dazu erstellen wir im C++ Builder als erstes eine neue Mobile Firemonkey-Anwendung.

Ich arbeite für dieses Beispiel nur mit dem vorerstellten Dialog. Als erstes müssen wir in die Headerdatei folgende Includes einfügen:

#ifndef WIN32
#include >iOSapi.UIKit.hpp<
#include >iOSapi.CocoaTypes.hpp<
#endif

Der Einfachheit halber habe ich jetzt einfach ein #ifndef WIN32 darum gemacht. Somit wird dieser Code immer ausgeführt, sobald die Platform nicht Windows 32 Bit ist. Wollt ihr das Programm auch als 64 Bit compilieren, müsst ihr natürlich den entsprechenden ifdef für iOS machen.

Nachdem wir die Includes haben, brauchen wir 2 Funktionsdefinitionen:

	#ifndef WIN32
	_di_UIApplication SharedApplication(void);
	_di_NSURL StrToNSUrl(String str);
	#endif

Shared Application wird für die Mail-App benötigt (um Mails versenden zu können, muss man nämlich auf die Mail-App von iOS zugreifen). Als Rückgabewert haben die zwei beiden Funktionen einen Datentypen mit _di_ vorangestellt (welche für Delphi-Interface stehen).
StrToNSUrl wird für das umwandeln des Strings benötigt (NS sind iOS Datentypen).

Die ausprogrammierten Funktionen sehen dann wie folgt aus:

#ifndef WIN32
_di_UIApplication TFrameKontaktDetail::SharedApplication(void)
{
	return TUIApplication::Wrap(TUIApplication::OCClass->sharedApplication());
}
//---------------------------------------------------------------------------

_di_NSURL TFrameKontaktDetail::StrToNSUrl(String str)
{
	return TNSURL::Wrap(TNSURL::OCClass->URLWithString(NSSTR(str)));
}
//---------------------------------------------------------------------------
#endif

Um eine Mail zu versenden fehlen nur noch 2 weitere Zeilen:

#ifndef WIN32
String strURL = "mailto:tester@googlemail.com?subject=Test&body=Gesendet%20von%20iOS";
this->SharedApplication()->openURL(StrToNSUrl(strURL));
#endif

Die erste Zeile sagt: Öffne eine neue E-Mail an den Empfänger „tester@googlemail.com“ mit dem Betreff „Test“ und dem Text „Gesendet von iOS“.
Falls Ihr im Betreff oder als Text etwas mit Leerzeichen o. ä. übergeben wollt müsst ihr wie man sehen kann, die entsprechenden Escape-Sequenzen für HTML verwenden (%20 z. B. für Leerzeichen).
Sollte es nicht funktionieren, liegt es wahrscheinlich daran, dass kein E-Mail-Account eingerichtet ist. Dies ist nämlich Voraussetzung dafür.

Das wars auch schon 🙂

27
Dez

Kurz vor Jahresende…

…melde ich mich nochmal zu Wort. Habe es heute endlich mal geschafft meine WordPress-Installation auf 3.8 Upzudaten. Eigentlich wollte ich das ja schon letzte Woche machen. Irgendwie kam mir aber dann immer wieder etwas dazwischen. Dienstag, Mittwoch, Donnerstag ist ja sowieso ganz fix vorbei. Mit den ganzen Verwandschaftsbesuchen sind die Feiertage ja sowieso schon verplant.

Die Hälfte des Urlaubs ist nun schon fast rum. Das was ich schaffen wollte habe ich noch nicht wirklich (ganz) geschafft. Naja, ein wenig gelesen habe ich schon. Auch an meiner MedienVerwaltung habe ich wieder ein wenig was gemacht. Ein Teil der Daten liegt bereits in einer MySQL-Datenbank im Internet, so dass ich per Handy darauf zugreifen kann (wenn ich dann die entsprechende App dazu fertig habe :-)).

Mit unserer Kaffeemaschine hatten wir auch nochmal Glück im Unglück. Habe die ja am Montag vorige Woche zur Reparatur gebracht. Allerdings wurde die nicht vor Ort repariert, sondern eingeschickt. Allerdings erst am Mittwoch. Also hatte ich schon wenig Hoffnung, das Reparierte Gerät noch vor Weihnachten zu erhalten. Allerdings hab ich dann doch Samstags schon wieder einen Anruf bekommen, dass es wieder da sei. Allerdings habe ich die Maschine erst am Montag holen können, da die erst Samstag-Mittag angekommen ist und das Reparaturcenter da schon zumacht.
Zumindest haben wir über die Feiertage Kaffee gehabt 🙂

16
Dez

Pech mit der Kaffeemaschine…

Wer meinen Blog regelmäßig liest, der wird sich wahrscheinlich auch an den Post mit der Kaffeemaschine erinnern (zuerst die aus Amazon mit dem Plastikgeruch, danach die gebrauchte). Nun, jetzt gibt es wieder ein anderes Problem.
Das Scharnier an dem der Deckel geöffnet ist hält nämlich nicht mehr auf der linken Seite. Scharnier ist vllt. etwas übertrieben, eher ein Plastikbolzen. Was allerdings nichts an der Situation ändert. Da der Deckel hinten etwas locker ist, „schließt“ er nicht mehr richtig.
Somit ist nicht mehr genug Druck auf dem Pad und es gibt nur noch so eine braun-durchsichtige Brühe, welche die Bezeichnung „Kaffee“ nicht verdient hat.

Also war ich heute mit dem Gerät im Elektrogeschäft wo ich diese auch gekauft habe und dort in der Service-Annahmestelle abgegeben. Leider wird die Maschine erst am Mittwoch mit der Post abgeholt. Somit ist die Wahrscheinlichkeit, dass ich das Reparierte/das Austauschgerät noch vor Weihnachten bekomme ziemlich gering.
Blöd, über die Feiertage kein Pad-Kaffee. Wir werden dann wohl die alte Filtermaschine meiner Eltern erstmal verwenden. Kaffeepadmaschine ist für 2 Personen halt einfach praktischer. Naja, die 1-2 Wochen werden wir auch ohne schaffen 🙂

11
Dez

iOS mit dem C++ Builder, endlich ist es da!

Lange erwartet, ist nun endlich das langersehnte Update von RadStudio XE5 da. Nun kann man auch mit C++ iOS-Apps entwickeln. Das Update gibt es bereits seit Freitag. Zwar hat man die letzten paar Tage auf Twitter schon viele Previews usw. gesehen, allerdings gab es noch nirgends so wirklich eine Meldung, dass die finale Version veröffentlicht wurde (die Beta läuft ja schon eine ganze Weile). Gestern habe ich dann auch wieder durch Twitter zufällig mitbekommen, dass das „Update 2“ für RadStudio nun veröffentlicht wurde, aber auch hier wieder kein Wort darüber, dass nun iOS für C++ unterstützt wird.

Heute ist mir dann aber doch eingefallen, dass der Download-Ordner bei der Betaversion „_Upd2“ angehängt hatte dabei hat es dann „Klick“ gemacht. Also erstmal ins Developer-Network und die vorhandenen Downloads gecheckt. Update 2. Wiederum: Keine Info, dass nun iOS mit C++ möglich ist. Also hab ich erstmal auf Download geklickt. Auf der Info-Seite die dann erstmal kommt habe ich nochmal nach dem Begriff „iOS“ gesucht. Und doch, ganz am Ende der Seite steht ein kleiner Hinweis.

Genauso wie wir, denke ich, dass auch schon viele andere C++-Entwickler auf dieses Update warten. Umso unverständlicher, dass es keine Rund-E-Mail oder was ähnliches gibt, dass dieses Update nun endlich zur Verfügung steht. Auch die auto-Update-Funktion brachte (zumindest bei mir) keine Meldung, was ich aber darauf zurückführe, dass das ganze RadStudio für Update 2 neu installiert werden muss.

Nun ja, jedenfalls habe ich jetzt Update 2 installiert und das Entwickeln für iOS funktioniert damit. Da wir in der Firma auch für iOS entwickeln wollen, hab ich vor einer Weile ein Macbook bekommen (da ich ja auch schon in der Beta war). Entwickeln für iOS ist nämlich logischerweise nur möglich wenn man ein entsprechendes Endgerät (=Mac) hat.
Übrigens sollte man auch kurz erwähnen, dass der iOS-Simulator nicht mit C++ funktioniert. Grund ist die unterschiedliche Prozessor-Architektur (der Simulator wird auf x86-Basis ausgeführt). Also braucht man zusätzlich zum Mac mindestens noch ein iOS-Gerät.

Da das Update nun endlich erschienen ist und man darüber sprechen darf, wird es in nächster Zeit von mir für iOS ein paar Tutorials geben 🙂