Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Gemeinsame Codebasis für Desktop und Mobile??? (https://www.delphipraxis.net/178185-gemeinsame-codebasis-fuer-desktop-und-mobile.html)

BlackGuest 21. Dez 2013 20:59

Gemeinsame Codebasis für Desktop und Mobile???
 
Hallo zusammen,

programmiere schon seit Delphi 2 mit diesem PC Anwendungen. Meine letzte lizensierte Version war XE.
Jetzt bin ich auf XE5 umgestiegen um damit plattformübergreifend den gleichen Code zu verwenden. Bin also in der Hinsicht noch absoluter Frischling, auch was die FireMonkey Anwendungsumgebung darstellt.

Jetzt macht es mich aber schon mal stutzig, dass ich entweder eine Firemonkey Desktop oder eine mobile Firemonkey Anwendung erstellen kann. Klar, dass die Komponenten unterschiedlich auf den unterschiedlichen Systemen aussehen aber der Code kann doch prinzipiell identisch sein, oder wo liegt hier das Problem? Muss ich wirklich alle Funktionen komplett auslagern und im Prinzip für Desktop und Mobile ein extra Projekt anlegen, was aber dann die gleichen Formulare etc. enthält???

Sorry, falls die Frage schon mal da war, dann bitte einen Link. Habe über die Suche nichts gefunden.

Gruß
BlackGuest

Insider2004 21. Dez 2013 21:03

AW: Gemeinsame Codebasis für Desktop und Mobile???
 
Es gibt einfach keine gemeinsame Codebasis, weil FMX und VCL völlig unterschiedlich sind. Ausserdem hatte EMBA noch die glorreiche Idee, das Frontend des neuen Mobile-Compilers inkompatibel zu machen. Wirklich 100% common code hast Du nur bei Lazarus. Aber das hat auch schon 20 Jahre Stabilisierung hinter sich.

arnof 21. Dez 2013 21:09

AW: Gemeinsame Codebasis für Desktop und Mobile???
 
Zitat:

Zitat von Insider2004 (Beitrag 1240714)
Es gibt einfach keine gemeinsame Codebasis, weil FMX und VCL völlig unterschiedlich sind. Ausserdem hatte EMBA noch die glorreiche Idee, das Frontend des neuen Mobile-Compilers inkompatibel zu machen. Wirklich 100% common code hast Du nur bei Lazarus. Aber das hat auch schon 20 Jahre Stabilisierung hinter sich.

Klar gibt es eine gemeinsame Codebasis :!:

Die GUI ist aber unterschiedlich!

Eine App sollte sich schon zwischen Handy und Tablet unterscheiden. Für den Desktop sollte Sie sicher auch optimiert anders aussehen. Sie kann aber die gleiche Codebasis haben :thumb:

PS: FMX gibts es auch für den Desktop; beim MAC muss man FMX auch für den Desktop nehmen ;-)

BlackGuest 21. Dez 2013 21:18

AW: Gemeinsame Codebasis für Desktop und Mobile???
 
Zitat:

Zitat von Insider2004 (Beitrag 1240714)
Es gibt einfach keine gemeinsame Codebasis, weil FMX und VCL völlig unterschiedlich sind. Ausserdem hatte EMBA noch die glorreiche Idee, das Frontend des neuen Mobile-Compilers inkompatibel zu machen. Wirklich 100% common code hast Du nur bei Lazarus. Aber das hat auch schon 20 Jahre Stabilisierung hinter sich.

Ich will ja FMX für Mobile und Desktop verwenden. Die Komponenten sind doch für alle Systeme möglich. Von der VCL werde ich mich komplett trennen. Ist ja auch kein Problem. Ich baue meine Formulare mit den FMX Komponenten neu auf und verwende den bisherigen (angepassten) Code. Aktuell geht es mir um die Portierung eines bestehenden XE Projekts auf alle Plattformen.
Nur nach meinem aktuellen Wissensstand muss ich dafür ein Projekt für die Mobile und eines für die Desktop Variante anlegen, mit identischen Komponenten und identischem Code. Das kann es doch nicht sein?

Einzigster Unterschied wird evtl der visuelle Aufbau sein.

Gruß
BlackGuest

BlackGuest 21. Dez 2013 21:23

AW: Gemeinsame Codebasis für Desktop und Mobile???
 
Zitat:

Zitat von arnof (Beitrag 1240715)
Klar gibt es eine gemeinsame Codebasis :!:

Die GUI ist aber unterschiedlich!

Eine App sollte sich schon zwischen Handy und Tablet unterscheiden. Für den Desktop sollte Sie sicher auch optimiert anders aussehen. Sie kann aber die gleiche Codebasis haben :thumb:

Genau das meinte ich. Für Handy und Tablet kann ich in einem Projekt arbeiten, Für den Desktop brauche ich aber ein neues.?
Von den Möglichkeiten der Darstellung etc. habe ich auf einem Tablet meist Möglichkeiten, die an einen Desktop heranreichen oder gar noch besser sind (Displayauflösung). Kann aber diese beiden Plattformen nicht in einem Projekt bedienen.

Gruß
BlackGuest

arnof 21. Dez 2013 22:06

AW: Gemeinsame Codebasis für Desktop und Mobile???
 
es gibt ein Video ich glaube das ist von davidi von der coderange 8 (nicht sicher) der zeigt wie man über einen Trick den Status was für ein Fenster bzw app ist einfach umschaltet via Projectmanager.

Aber wenn Du Funktionen in units auslagerst, so kannst Du diese einfach einbinden. Oder Copy und Paste, das geht auch wenn Du einen neuen Projekttype anlegst.

Was emba mit der Aussage meint, ist das Du alles in einer Umgebung machen kannst ohne alles neu (incl. Grundlagen) neu erlernen musst: xcode mac; eclipse Android; Delphi Windows, hier kann man außer der Logig oder Bildern nichts übertragen.

Also dein Problem ist kein Problem nur Bequemlichkeit!

BlackGuest 21. Dez 2013 22:27

AW: Gemeinsame Codebasis für Desktop und Mobile???
 
Zitat:

Zitat von arnof (Beitrag 1240719)
Also dein Problem ist kein Problem nur Bequemlichkeit!

Bei mehreren 1.000 Zeilen Code schon ein riesen Problem. Vor allem muss ich bei Änderungen zwei Projekte pflegen. Das ist bei größeren Projekten nicht machbar. Auslagern kann ich leider nicht alles. Es gibt zu viele Komponenten im Formular, die andere in diesem ändern.

Habe gerade mal nachgeschaut, das Projekt, welches ich aktuell für die unterschiedlichen Plattformen umstellen will besitzt 461 Komponenten in einem Formular. Gut, ca. die Hälfte sind Label, da muss ich auf nix reagieren. Der Rest aber hat meist mehrere Ereignisbehandlungsroutinen. Es ist ein kleines Projekt mit nur rund 16.000 Zeilen Quellcode.

Mein Problem hat da nichts mit Bequemlichkeit zu tun.:wink:

Ich denke mal, soooo selten ist es nicht, dass man eine Konfigurationssoftware für ein embeddet System für mehrere Plattformen anbieten will.

Zitat:

Was emba mit der Aussage meint, ist das Du alles in einer Umgebung machen kannst ohne alles neu (incl. Grundlagen) neu erlernen musst: xcode mac; eclipse Android; Delphi Windows, hier kann man außer der Logig oder Bildern nichts übertragen.
Das ist Quatsch. Es geht um eine gemeinsame Codebasis!

Gruß
BlackGuest

Sir Rufo 21. Dez 2013 23:18

AW: Gemeinsame Codebasis für Desktop und Mobile???
 
Dein Problem ist, dass du für dein Projekt den falschen Ansatz gewählt hast, und sich das nun rächt.

Für eine Mobile-Anwendung wirst du immer eine andere Art der Darstellung nutzen wollen, um es im Zielsystem harmonisch aussehen zu lassen.

Zum einen, weil der Styleguide ein anderer ist, weil der Platz und der Formfaktor anders ist, weil die grundsätzliche Bedienung einfach anders ist.

Auch wenn bei Delphi mit dem RAD geworben wird (Klatschen, Klicken, Kompilieren), bei Multiplatform hat man damit ein Rad ab oder verliert es, wenn man nicht anfängt anders zu programmieren.

Also:
Weg mit dem ganzen Codegeraffel aus den Forms was nicht direkt mit der Darstellung zu schaffen hat
Weg mit der Datenhaltung in der Form/den Controls (dort wird nur angezeigt und/oder entgegengenommen => User Interface)

Schon ist man einen Schritt weiter um mit einer gemeinsamen Codebasis Multiplatform-Anwendungen zu schreiben.

Harry Stahl 21. Dez 2013 23:36

AW: Gemeinsame Codebasis für Desktop und Mobile???
 
Zitat:

Zitat von arnof (Beitrag 1240715)
Klar gibt es eine gemeinsame Codebasis :!:

Die GUI ist aber unterschiedlich!

Eine App sollte sich schon zwischen Handy und Tablet unterscheiden. Für den Desktop sollte Sie sicher auch optimiert anders aussehen. Sie kann aber die gleiche Codebasis haben :thumb:

PS: FMX gibts es auch für den Desktop; beim MAC muss man FMX auch für den Desktop nehmen ;-)

ArnoF hat Recht. Man kann eine gemeinsame Codebasis erstellen, benutzt aber für Windows und MAC ein FMX-Desktop-Projekt mit den dazugehörigen Formularen und für IOS und Android nimmt man ein eigenständiges FMX-Mobile-Projekt mit den passenden Formularen.

Deine Programm-Datenlogik kannst Du hingegen in Units auslagern, die Du mit beiden Projekten verwenden kannst. Da musst Du aber viel mit IFDEF-Direktiven arbeiten. Auch solltest Du nach Möglichkeit mit neueren Delphi-Techniken (z.B. "TPath" --> System.IOUtils.TPath.getDocumentsPath) arbeiten, da diese automatisch auf allen Plattformen das richtige Ergebnis liefern.

Ein wenig komplizierter ist es geworden, weil die mobilen Anwendungen nun mit Nullbasierten Strings arbeiten. Da muss man einiges anpassen (ist ein wenig Fleißarbeit).

Hier solltest Du Dir mal die TSringBuilder-Klasse ansehen, die liefert z.B. für 1-Basierte und 0-basierte Strings ebenfalls automatisch das richtige Ergebnis zurück. Zudem bieten diese neuen Techniken eine Reihe von Annehmlichkeiten, die man nicht mehr missen möchte, wenn man Sie einmal zu schätzen gelernt hat.

Harry Stahl 21. Dez 2013 23:48

AW: Gemeinsame Codebasis für Desktop und Mobile???
 
Zitat:

Zitat von Sir Rufo (Beitrag 1240723)
Weg mit dem ganzen Codegeraffel aus den Forms was nicht direkt mit der Darstellung zu schaffen hat
Weg mit der Datenhaltung in der Form/den Controls (dort wird nur angezeigt und/oder entgegengenommen => User Interface)

Schon ist man einen Schritt weiter um mit einer gemeinsamen Codebasis Multiplatform-Anwendungen zu schreiben.

Auch dieser Aussage von Sir Rufo kann ich nur beipflichten. Erfreulicherweise hatte ich schon vor einiger Zeit angefangen, meine Projekte in dieser Hinsicht zu entwickeln, dass macht mir den Umstieg auf FireMonkey jetzt um einiges leichter.

Auch wenn es so schön verführerisch ist, in jeden Button-Klick-Event alles reinzupacken: Vermeide es, wo es geht. Versuche insbesondere die Darstellung der Oberfläche von deiner Datenlogik zu trennen. CrossPlatttform-Entwicklung zwingt einen, sich etwas mehr Gedanken um seine Programmstrukturen zu machen, aber das kann ja nicht schaden...


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 Uhr.
Seite 1 von 3  1 23      

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