Schlagwort-Archive: RAD-Studio 10.1 Berlin

Firemonkey App Framework FAF (1)

For over two years now I am working on a framework for my mobile projects .
Why another „Framework“ ? Just want to make my work easier, FAF allows me to setup a working, deployable prototype of an app within less than an hour.

  • Using App- and ViewController (extendable to MVC).
  • Every view comes with an container form inherited from a common base form for easy design per platform (+ IUIView interface).
  • A view can be „fullscreen“ (thus hiding content of Mainform) or embedded.
  • Standard Views are Splash, Setup, Login, Settings, Main (in contrast to Application.Mainform)
  • MainForm comes with TMultiView Menu and a basic IMainView interface
  • On startup for every view a TViewInfo is registered.
  • At runtime the view’s content layout is assigned the main form container as parent
  • Views can be closed or stacked (hidden)n controlled by a TUIViewController with a  TUIViewStack.
  • Templates for views like Splash, Login, Setup, Settings, Main etc
  • Very basic preparations for multi language
  • Local storage for data

Working on

  • (Better) usage of TMultiView Menu
  • Global Color and Font Settings via Code, XML, JSON etc
  • Core Structure for MVC and / or MVVM
  • Dependency Injection Container / IoC
  • More View Templates
  • Multi Language
  • etc. (enough ideas)

I have a version with a DependencyInjection container but so far any code in the implementation section did not work properly. Still checking.

Due to bugs not working in 10.1 Berlin properly.

 

Delphi 10.1 Berlin THTTPClient Trouble (2)

Ok, switching to english for recapitulation

  1. Response.ContenAsString now checks for Content-Encoding = gzip and uses a compression stream (did make app crash)
  2. With AcceptEncoding = identity it can be avoided that a server adds this encoding
  3. It doesn’t matter what Encoding, Charset etc is set always get an EEncodingError querying IHTTPResponse.ContentAsString
    after successful POST (works in 10.0)
    (Embarcadero QC RSP-14300)
  4. Instead using IHTTPResponse.ContentAsString passing a TStringStream with HTTPClient.Post then
    no exception and StringStream.DataString is readable without any problem
  5. But final problem: Response delivers HTML and no JSON anymoreNow checking server side first if there is a problem before passing another bug report.
  6. My customer detected the reason:
    In Delphi 10.0 HTTPClient managed cookies from server login „behind the scene“ and sent it with every post..
    Proof: Setting HTTPClient.AllowCookies := False and an app does not work.
    In Delphi 10.1 Berlin this has changed, now there has to be added before a HTTPClient.Post
    HTTPClient.CustomHeaders[‚Cookie‘] := ‚WebBrokerSessionId=‘ + FSessionID;
    Otherwise any test app does not work.
    Removing such an automatism like this is a bug, time for another report. (Embarcadero QC RSP-14301)

 

Delphi 10.1 Berlin :: Problems with changed Fonts (Bug or Feature ?)

Just realized by going through the forms of an actual project that the font of TLabel was changed.
In the original app neither style nor anything else concerning fonts was changed but any added label uses a different font (style) now.

Screenshots show the difference

Delphi 10.0 New Form with Label

Delphi 10.0 New Form with Label (Android)

Delphi 10.0 Base Form with new Label

Delphi 10.0 App Base Form with new Label (Android)

Delphi 10.1 New Form with Label (Android)

Delphi 10.1 New Form with Label (Android)

Delphi 10.1 Base Form with Label (Android)

Delphi 10.1 App Base Form with Label (Android)

(to be continued … may be)

Delphi 10.1 Berlin :: Form Inheritance and Layout.Padding Bug

Simple FMX app having base form with a Layout.padding set to (20,20,20,20) and a few inherited forms.
Few of them have different settings for padding, but changed, saved and reopened: 

Changes are not saved, I checked the *.fmx file !

So do I really have to set each Layout’s padding individual by hand ? Per platform ? Oh boy this is crazy !!!

(Embarcadero QC RSP-14294)

Delphi 10.1 Berlin THTTPClient Trouble

Ein KO Kriterium für den Einsatz von Delphi 10.1 war eine Exception vom Typ EZCompressionError in einem FMX Projekt, welches mit Delphi 10.0 einwandfrei funktioniert.

Bei der Ursachensuche musste ich feststellen, dass die Interna von THTTPClient – und allem was damit zusammenhängt – sich grundlegend geändert haben:
In IHTTPResponse.ContentAsString wird jetzt z.B. das „Content-Encoding“ abgefragt und falls dieses „gzip“ ist, wird ein Compression Stream für die Ausgabe erzeugt, in 10.0. wurde das „Content-Encoding“ ignoriert. Und da kracht es gleich beim Login.
Mit HTTPClient.AcceptEncoding := ‚identity‘ war das Problem erstmal vom Tisch (womit jedes serverseitige Encoding  unterbunden wird).

Das nächste Probleme:
Egal welches Encoding, Charset etc, beim Abruf der JSON Daten vom Server, wenn intern die Streams umkopiert werden, kommt immer die Exception EEncodingError „Keine Zuordnung für Unicode-Zeichen in der Multibyte-Zielcodeseite vorhanden“. (Es ist egal, was für das Encoding angegeben ist: serverseitig ANSI)

Nach langem Hin und Her und einigen Stunden Debugging:
Wenn entweder ein Stream im HTTPClient.Post() für den Response übergeben oder Response.ContentStream abgefragt wird (in TStringStream umkopieren), dann klappt das ohne Exception und es gibt lesbaren Response String.
Aber: Der Response enthält keine JSON Daten sondern HTML! Was geht nun schief ?
Fiddler zeigt alles als korrekt an, das Sever Log zeigt keine (offensichtlichen) Fehler.

Negativ ist in diesem Zusammenhang die Hilfe aufgefallen: Ich bin da auf zu viele Einträge mit “ … zu diesem Zeitpunkt keine weiteren Informationen“ gestossen.

Fortsetzung folgt (wahrscheinlich, nicht garantiert)

Embarcadero RAD-Studio / Delphi 10.1 Berlin – Erste Eindrücke (3 & Final)

Nur wenige Tests mit einer App konnte ich machen:

  • Wieso klappt die IDE beim Debuggen einer iOS Anwendung immer weg ? Das nervt  !
  • Der HTTPClient bringt jetzt einen EZCompressionError bei einem POST  (kein Problem unter 10.0)
  • Und damit ist Ende mit Tests, da ich ja Delphi 10.0 nicht mehr zum Vergleich starten kann.

Noch andere (offensichtliche und versteckte) Probleme mit Delphi 10.1 finden sich in diesem Thread auf Delphi-Praxis !

Da frage ich mich wirklich, wie die QA bei Embarcadero aussieht. Überhaupt vorhanden ?

Unterm Strich:
Für mich ist diese Version von Delphi 10.1 nicht nutzbar, daher zurück auf Anfang, zu Delphi 10.0 Seattle !

Etwas sehr Wichtiges vergessen:
„Deklaration suchen“ funktioniert nicht bei mir, zumindest nicht Unit übergreifend ! SymbolInfo ist korrekt, aber die Code Zeile wird nicht angesprungen.
Und im Debugger wird mit F7 auch nicht mehr in die Implementierung einer Funktion gesprungen – wieder Unit übergreifend.

 

Embarcadero RAD-Studio / Delphi 10.1 Berlin – Erste Eindrücke (2)

Die Installation verlief reibungslos und schnell, genauso die erste Reorganisation der IDE, insgesamt positiver Eindruck.

Aber dann sind mir auch gleich folgende Probleme / Ungereimtheiten mir aufgefallen:

  1. Die Installation des Android SDK erfolgt nicht im SDK Verzeichnis wie unter 10.0 sondern im CatalogRepository ?
    Wohl eine Folge davon, das der SDK jetzt mit GetIt installiert wird. Wozu dann dann noch der SDK Pfad ?
  2. „Codesite Express“ lässt sich nicht installieren, da schon unter 10.0 die Vollversion installiert ist.
    Damit fällt ein integraler Bestandteil meiner Toolchain erstmal weg, mehr als unangenehm !
  3. Options Dialog: Wieso braucht der Dialog > 3 sec zum Öffnen ?
    Und wieso muss ich einen Bibliothekspfad manuell für jede Platform eintragen ? Warum gibt es z.B. keinen „globalen“ Basispfad für alle Plattformen oder VCL/FMX?
  4. Wieso bitte wird noch in iOS 64 und 32 Bit unterschieden ?
  5. GetIt: Alle Bibliotheken werden als xxx230.bpl installiert ?
  6. Hilfe und Realität: Es wird geschrieben, dass es die FireUI App Preview für iOS und Android gibt, aber keine Links – und im App Store schon mal nichts zu finden, sucht man im Internet,  findet sich nur der Hinweis / Link auf die Android App – also ein gross angepriesenes Feature,  ohne iOS erstmal wertlos. Mangelhafte Zeitplanung ?
  7. Liste dann hier auch nochmal das nutzlose Migrationstool für die IDE Settings.

Bei den Kleinigkeiten, bei den Feinheiten, da hat hapert es gewaltig, IMHO hat man bei Embarcadero im Delphi Team das vollkommen aus den Augen verloren, es geht wohl nur noch um neue tolle Features und damit um Umsatzsteigerung. Die IDE hat sich für mich einfach schon lange nicht mehr „rund“ angefühlt.

Mal ehrlich, bei den (Luxus)Preisen, die Embarcadero aufruft, erwarte ich ein besseres „Polishing“. Da es ist dann auch kein Wunder, wenn „alte“ Delphianer wie meiner einer sich intensiv mit Alternativen befasst, sei es RemObjects oder Xamarin oder gar native IDE’s.

Aber nun geht es weiter mit den Tests.

PS: Das tut richtig weh ! Delphi 10.0 Seattle lässt sich nicht mehr starten, sondern bricht mit einem Runtime error ab !!! 

Embarcadero RAD-Studio / Delphi 10.1 Berlin – Erste Eindrücke

Heute ist die Mail zum Release von Delphi 10.1 Berlin eingetrudelt. Da die Installationspakete für registrierte User  bereitstanden, habe ich mir die Zeit für einen Testlauf genommen.

Der Webinstaller ist klein und schnell, richtet aber auch nur eine Art  Stub ein, nach Start kommt ein kompletter neuer Installations-Dialog hoch, ein knappes Willkommen und dann ein Menu zur Auswahl dessen, was installiert werden soll – sehr positiv, wenn man z.B. gerade wenig  freien Platz auf der Festplatte hat und nicht alles braucht. Für die Auswahl wird der geschätzte Speicherplatz und die etwaige Zeit für die Installation angegeben. Letztere ging dann gefühlt einiges flotter als bei früheren Versionen (oder nur weil ich erstmal C++ ausgelassen habe ?).

Die reine Delphi Installation inkl. iOS / Android belegt knapp 35 GB, das komplette RAD-Studio schätze ich dann mal schon auf über 50 GB.

Die IDE started schnell – klar, ist ja auch noch nichts eingerichtet – und zeigt sich in einem (für mich) angenehmen Hellgrau. Die Willkommenseite ist auf aufgeräumt mit klaren Symbolen, keine Spielereien, es gibt zwar ein „Zuletzt verwendete Projekte / Bevorzugte Projekte“ aber IMHO ist das noch meilenweit von den „Favoriten“ aus XE7 entfernt.

Wie immer, muss erstmal die IDE eingerichtet werden und – Hoppla ! – der Optionen Dialog braucht über 3 sec zum Öffnen ? Nicht sehr prickelnd !

Da findet sich übrigens ein „Migrationstool“ für die Übertragung der IDE Einstellungen von einer Version auf die andere, witzigerweise taucht aber in der Liste neben „Delphi 7“, „Delphi XE8“, und „Delphi 10 Seattle“ kein „Delphi 10.1 Berlin“ auf, sondern nur ein „Delphi XE10“. Das Tool funktioniert also nicht, nutzlos.

Nun muss ich aber erstmal einiges umschaufeln und Platz schaffen und dann Komponenten installieren, bevor der Test weiter geht.

P.S.: Updates für TMS Pack for Firemonkey und TMS WebGMaps for Firemonkey brachten schon die Installation für Delphi 10.1 mit.
Mein Dank an TMS, das nenne ich mal super schnell ! Damit können gleich Crossplatform Projekte Tests laufen..