Hallo, meine Freunde!

Ja, ich habe die Erlaubnis, über die kommende neue Version von Delphi 10.4 Sydney zu bloggen!

Zuerst möchte ich die dringendste Frage für alle FMX-Mobile-Entwickler beantworten:

Was ist mit ARC?

Es ist weg, es ist Geschichte, ich hoffe, ich werde nie wieder irgendeine Art von ARC sehen!

Der nächste auf meiner Liste ist Metal... Kein OpenGL-(ES) mehr auf iOS.

Es hat eine schöne neue Funktion: Du kannst die Framerate einstellen, z.B. auf 60FPS fix oder den Bildschirm nur aktualisieren, wenn sich etwas geändert hat. Ich habe keine Langzeit -Tests mit dieser Einstellung durchgeführt, aber ich gehe davon aus, dass dies die Akkulaufzeit deutlich verlängert.

Mit beiden - NO ARC und Metal - fliegt meine iOS-App! Nicht nur nach den nackten Zahlen, man spüren wirklich die neue performance!

Auch sehr schön: Die neuen Managed Records - Marco Cantu hat bereits darüber gebloggt hat. Bitte folge dem Link!

Warum sind diese Records so interessant? Nun, ich habe eine 34 Jahre alte riesige App, die von TP bis Delphi gewachsen ist. In dieser App verwenden wir hauptsächlich Records. Im Moment können wir nur short-strings verwenden.

Und warum?

Wenn z.B. ein Record einen Ansi- oder Unicode-String enthält:

TFoo = Record
  Name : String;
end;

Jede Prozedur, die eine TFoo-Instanz verwenden will, macht:

Procedure Bar(Var aFoo : TFoo);
var
  Buff : TFoo;
begin.
  Buff := aFoo;
  aFoo.Name := 'Anderer Name';
  //...
  aFoo := Buff;
end;

Da Sie nur die Referenz von Name kopieren, ändert die Änderung von aFoo.Name auch Buff.Name. Der Buffer funktioniert also überhaupt nicht!

Mit den neuen Records haben eine Kopiermethode, bei der man mit einem Aufruf von Setlength eine Kopie der Zeichenkette zu erstellen kann.

Zum ersten Mal in der Geschichte wird die Migration von D2007 auf 10.4 eine Menge Arbeit sparen. Wir werden sehen - noch ein langer Weg.

Übrigens: Jetzt ist es ein guter Zeitpunkt, Ihr Abonnement zu erneuern. Bitte klicken Sie auf das Banner unten.

Fröhliches Programmieren mit dieser #ComingSoon neuen Version von #Delphi104!

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder. Design. Code. Compile. Deploy.

Start Free Trial   Free Delphi Community Edition   Free C++Builder Community Edition   Upgrade Today  

Anonymous
  • Wo ändert die Zuweisung an aFoo.Name auch Buff.Name?

    program t2;
    
    {$APPTYPE CONSOLE}
    
    type
      TFoo = Record
        Name : string;
      end;
    
    Procedure Bar(Var aFoo : TFoo);
    var
      Buff : TFoo;
    begin
      Buff := aFoo;
      Assert(Buff.Name = aFoo.Name);
      aFoo.Name := 'Anderer Name';
      Assert(Buff.Name <> aFoo.Name);
      //...
      aFoo := Buff;
      Assert(Buff.Name = aFoo.Name);
    end;
    
    var
      foo: TFoo;
    begin
      foo.Name := 'Mein Name';
      Bar(foo);
      Assert(foo.Name = 'Mein Name');
    end.