Posts mit dem Label Embarcadero werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Embarcadero werden angezeigt. Alle Posts anzeigen

Montag, 21. Mai 2018

Listen in FMX (StringGrid)

Listen in FMX, Nutzung des StringGrids

Im letzten Post ging es um die Nutzung von ListView- Steuerelementen der VCL als Standard- Stream für C++. Nun gibt es im FMX- Framework keine Unterstützung für das Windows- Steuerelement und es braucht eine andere Lösung. Dieses kann ein StringGrid sein.

Sonntag, 13. Mai 2018

VCL ListViews als Standard C++ Stream

VCL ListViews als Standard C++ Stream

In einigen der vorherigen Posts ging es um die Verwendung von GUI- Elementen für die C++- Standard- Streams. Neben dem Memofeld waren das auch Labels und Editfelder. Und für die VCL auch die Statuszeile. Damit lassen sich sicher schon einige interessante Anwendungen zusammenbauen, aber ich möchte jetzt noch einen Schritt weiter gehen, und ein ListView- Steuerelement verwenden. Dieses gibt es in der Form nur unter Windows, und damit auch nur für die VCL. Für FMX könnte man einen ähnlichen Wrapper für ein StringGrid implementieren, und damit die Funktion eines ListViews nachbilden. Aber das originale Steuerelement unter Windows nicht zu verwenden wäre sicherlich dumm. Kompatibilität ist nicht Verzicht sondern das Suchen geeigneter Abstraktionen. Eigentlich sollten die bisherigen Posts schon gezeigt haben, welche mächtigen Abstraktionen uns als C++- Programmierer zur Verfügung stehen, und das Verzicht auf Möglichkeiten sicher nicht zu diesen gehört.

Donnerstag, 10. Mai 2018

Weitere GUI- Elemente und C++- Streams

Weitere GUI- Elemente und C++- Streams

Wie im letzten Post schon angedeutet, geht es heute um weitere GUI- Elemente, die ich als Ausgabemedium für Standard- Streams verwenden möchte. Dabei sind der Phantasie keine Grenzen gesetzt,sie können Edit- Felder,  Label, die Statuszeile und die Überschrift des Formulars verwenden, aber auch so komplexe Oberflächenelemente wie ein VCL- ListView- Element für Windows. Dabei können die Standard- Streams cout, clog und cerr verwendet werden, oder sie definieren einen eigenen Stream den sie dann mit den normalen Stream- Operatoren verwenden können.

RAII beim Verwenden der stream- Neuzuordnungen

Weitere GUI- Elemente als streambuf und RAII zum aufräumen

Kurz vor dem Feiertag ein weitere Post. Wie bereits angekündigt, möchte ich einfach weitere Steuerelemente zur Ausgabe verwenden, zum anderen ist bisher immer noch das manuelle Aufräumen notwendig. In dem Post RAII - Mauszeiger für VCL + FMX habe ich ja erklärt, dass dieses dank RAII nicht notwendig ist, und durch C++ selber verhindert werden kann. Also möchte ich in diesem Post beginnen, einen entsprechenden RAII- Wrapper entwerfen. Weitere Steuerelemente werde ich im nächsten Post betrachten.

Freitag, 4. Mai 2018

Konvertierung der Delphi Stringtypen

Konvertierung der Delphi Stringtypen (template, Spezialisierung)

Wir alle kennen das Problem, dass die Delphi- Stringtypen (UnicodeString oder kurz String, AnsiString) nicht unbedingt zu C++ passen, und wir immer wieder die Methode c_str() bemühen müssen. Das ist nicht nur nervig, es kann auch zu Fehlern führen. Außerdem wollen wir oft den Inhalt einen Strings in einem anderen Datentyp haben, oder dieses umgekehrt in einen Delphi- String umwandeln, zum Beispiel um diesen in einem Edit- Feld eines Formulars anzuzeigen.

Dazu kommt, dass dank der nicht unbedingt nachvollziehbaren Entscheidung von Embarcadero unter iOS und Android weiter auf ein 16 bit Zeichentyp zu setzen, anstatt den systemspezifischen wchar_t Typ zu nutzen, der bei den unixoiden Betriebssystem ja ein 32 bit Datentyp ist. Damit kann es passieren, dass wir es in einem C++- Programm unter Android plötzlich mit 3 nicht unbedingt kompatiblen Datentypen zu haben. Dabei sollte es im Businessteil ihrer Anwendung nur die Entscheidung zwischen nationalen Zeichensatz (8 bit, char, string) geben, oder dem internationalen (wchar_t, wstring). Außerdem sind die Indizes für die Delphi Stringtypen auf den Desktop- Betriebssystemen 1 basierend, auf den mobilen Betriebssystemen aber an C und C++ orientiert 0 basierend. Auch dieses kann zu Problemen und notwendigen Anpassungen führen. Alles das wäre unter C++ einfach schlichtweg unmöglich, da hier ein Industriestandard die Investitionen des Entwicklers schützt.

Ich möchte hier eine Headerdatei für die weitere Verwendung in diesem Blog erzeugen, und dieses Problem mit Hilfe von C++- templates und der Spezialisierung dieser für spezielle Datentypen.

Mittwoch, 2. Mai 2018

RAII - Mauszeiger für VCL + FMX

RAII und plattformunabhängige Bildschirmcursor

Umsetzung von plattformunabhängige Bildschirmzeigern für die Maus mit Hilfe von Resource Acquisition Is Initialization (RAII)


Resource Acquisition Is Initialization (RAII) gilt als eines der Schlüsselkonzepte von C++, und es ermöglicht uns tatsächlich fehlerfreier zu programmieren. Dabei ist es wirklich einfach und leicht umzusetzen. Ins Deutsche übersetzt bedeutet es Ressourcenbelegung ist Initialisierung. Dabei wird die Verwendung einer beliebigen Ressource an den Gültigkeitsbereich einer Variable eines dafür definierten Types geknüpft. Bei der Variablendefinition wird die Ressource angefordert, endet die Lebensdauer der Variable, weil der Block geschlossen wurde, wird die Ressource selbständig freigegeben. Damit kann nicht nur die Freigabe von Speicher automatisiert, und damit auf einen in den coffee based Programmiersprachen gehypten Garbage Collector verzichtet werden, wir können auch Handles, Mutexe und andere Ressourcen damit kontrollieren.

Montag, 30. April 2018

Kommentar zu "Eine IDE, sie zu knechten" (Heise c't 10/2018)

Kommentar zu "Eine IDE, sie zu knechten" (Heise c't 10/2018)

Meine Gedanken, als ich diesen Artikel gelesen habe

Als ich am Freitag die neuste c't in den Händen hielt und den Artikel über Crossplattform- Entwicklungssysteme gelesen habe, war ich überrascht. Ich werde jetzt keine allgemeine Kritik an Zeitschriften folgen lassen. Aber wenn man bedenkt, dass die c't auch von Entscheidungsträgern gelesen wird, denen es leider oft an technologischen Spezialwissen fehlt, die unterschwellige Werbung oder auch das Bashing zu erkennen, ist das schon bedenklich. Und gerade Artikel der c't haben in der Vergangenheit schon als Basis gedient, einen Wechsel von C und C++ hin zu Java oder anderen Sprachen zu untermauern. So kann ich mir auch dieses Mal vorstellen, dass einige Nutzer des C++Builders und von Delphi Probleme bekommen und sich in ihrem Unternehmen rechtfertigen müssen. Denn schließlich steht es ja schwarz auf weiss in der Zeitung, und irgendwie glauben wir immer noch, dass es wahr ist, wenn es gedruckt ist. Und gerade die Mischung von sinnvollen Fakten mit kleinen Seitenhieben erscheint hier immer wieder erfolgreich. So möchte ich auch nur auf einige Punkte eingehen.
;