AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Quo vadis Embarcadero?

Ein Thema von Codehunter · begonnen am 19. Feb 2014 · letzter Beitrag vom 9. Jul 2014
Antwort Antwort
jensw_2000
(Gast)

n/a Beiträge
 
#1

AW: Quo vadis Embarcadero?

  Alt 21. Feb 2014, 20:23
Das stimmt. Es gibt keine VCL und nur eine sehr schlanke RTL (vergleichbar mit der Foundation bei iOS).
Ergo muss man all seinen Code, der auf der VLC oder der riesigen Delphi RTL basiert anpassen.
Wir habe das alle (ansatzweise) auch schon innerhalb von Delphi hinter uns, weil RTL und VCL auf Grund der von Firemonkey, iOS und Android komplett umgemodelt wurden. Bei Oxygene muss man halt die GUI neu machen, da es keine VCL mehr gibt. Das ist analog zu der Umstellung VCL zu FMX, richtig? Nur dass man anstatt FMX eben WinForms, Silverlight oder WPF benutzt und die RTL Dinge aus den .Net Namespaces holt, bzw. aus den IOS- oder Android SDKs bzw. Sugar.
Da ist es sehr hilfreich, wenn man seine Projekte zuvor in Delphi so aufgebaut hatte, dass UI und Implementation weitgehend voneinander getrennt waren. So ist es auch bei der VCL-FMX Migration.
Für den verbleibenden Delphi Code hat Oxygene dann zwei grundlegende Sachen zu bieten. Zum Einen gibt es den Oxydizer (Delphi Code in die Zwischenablage kopieren und in Oxygene als Oxygene Code wieder einfügen.). Solche Oxydizer gibt es für Java, C#, Delphi und (aktuell noch Beta) ObjectiveC. Zum Anderen hat Oxygene einige Kompatibilitätsoptionen, die dafür sorgen, dass der Kompiler "klassische" Delphi Syntax eher "gerade rückt".
Beide Migrationshilfen machen natürlich keinen 1:1 kompilierbaren Code. Aber es hilft sehr.

Also zusammengefasst.
- UI wegwerfen (wie beim VCL/FMX Wechsel)
- eingebundene RTL Units rauswerfen und durch .Net Namespaces ersetzen (anstatt "uses DateUtils, SynObjcs" nun "using System, using System.Threading") (ähnlich wie beim RTL Umbau für FMX & Co.)
- .Net, iOS oder Java Klassen anstatt Delphi Klassen benutzen (dafür hat Delphi keinen leider keinen richtigen Ersatz)

Ich habe seit Montag einen in Delphi geschriebenen Service weitgehend migriert (reine Größe in PAS Dateien 4,8 MB, keine Lust jetzt Zeilen zu zählen). Zugegeben, so ein Service hat keine Formulare. Daher war es nur "Code schupsen". Trotzdem ist es leichter als ich erwartet hatte. Nachdem der Code wieder kompilierbar ist wird das Refactoring aber sicher einige Wochen dauern. Unter Delphi sind viele Sachen einfach codelastiger als unter .Net. Mit der Oxygene Syntax kann man das Ganze nochmal gegenüber vergleichbarem C# Code deutlich zusammenkürzen.

Geändert von jensw_2000 (21. Feb 2014 um 20:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.561 Beiträge
 
Delphi 12 Athens
 
#2

AW: Quo vadis Embarcadero?

  Alt 21. Feb 2014, 21:17
Bei Oxygene muss man halt die GUI neu machen, da es keine VCL mehr gibt. Das ist analog zu der Umstellung VCL zu FMX, richtig?

...- UI wegwerfen (wie beim VCL/FMX Wechsel)
Das stimmt nur bedingt. Mit dem MIDA-Converter kann man zumindest sehr gut die Programm-Oberfläche konvertieren.

Ich mache das jetzt überwiegend so, dass ich einfach in der VCL-Form alle Controls auswähle, kopiere und in eine neue Form einfüge. Dann habe ich also nur VCL-Oberfläche ohne Source-Code. Bei einzelnen "Kandidaten" (z.B. TNotebook) funktioniert die Konvertierung (noch) nicht, da ändere ich die dann schnell in Controls um, wo ich weiß, dass es funktioniert (in diesem Fall also ein TPageControl). Dann lasse ich dort den MIDA-Converter drüber laufen und habe ratz fatz meine Oberfläche unter FMX wie unter der VCL. HIer könnt Ihr Euch das mal in meinem Video-Blog ansehen (Tipp: Vollbild und 720 DPI).

Dann kann ich Schritt für Schritt wieder die einzelnen Ereignisroutinen "befüllen", wobei es sich dort anbietet, UI und Code mehr zu trennen, falls man es eh nicht schon getan hat. Das schöne daran ist, dass man von Anfang an ein lauffähiges Programm hat und es schrittweise vervollständigen kann.

Da man in umfangreicheren Projekten ja durchaus 100 Formulare oder deutlich mehr hat, sehe ich da die größere Arbeit (und hier nimmt einem der MIDA-Converter wirklich viel Arbeit ab), als den Source-Code zu portieren. Delphi- und FMX-Funktionen sind eh schon in vielen Bereichen gleich (insbesondere der nicht visuelle Bereich), so dass der meiste Code, der unter Windows VCL/RTL funktionierte, ohne viel Änderungen auch unter Windows FMX/RTL funktioniert (also z.B. Streams, Stringlisten, eigene Klassen, usw). Nebenbei funktioniert das Meiste sogar auch schon so unter MAC OS X, ohne dass IFDEFS zwischen Windows und MAC OS X für unterschiedlichen Source-Code sorgen müssten.

Außerdem kann man das eine oder andere unter FMX auch mit deutlich weniger Zeilen Source-Code erreichen. In meinem VCL-PixPower-Programm brauche ich zur Anzeige (Owner-Draw) von Grafiken unterschiedlichen Formats aus einem Verzeichnis in einer Listbox ("Dialiste") ca. 200 Zeilen Sourcecode. Daneben kommen noch mehrere 100 Zeilen, um die Dateien einzulesen, daraus Thumbnail-Dateien zu machen und für den Zugriff bereit zu halten.

In FMX brauche ich für ALLES das (also einlesen und Anzeige) nur ca. 80 Zeilen!!! Und das ist ein Crosscompile-Lösung, die ohne ein einziges IFDEF sowohl unter Windows als auch unter MAC OS X funktioniert.

Geändert von Harry Stahl (21. Feb 2014 um 23:46 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz