Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism Delphi .NET Facts - was sich ändert (https://www.delphipraxis.net/5921-delphi-net-facts-sich-aendert.html)

sakura 23. Jun 2003 09:45


Delphi .NET Facts - was sich ändert
 
Hi DPler,

für alle die unter Euch, welche über den aktuellen Delphi-Tellerrand schauen möchten, hier mal eine vorläufige Liste der Dinge, welche mit Delphi.NET aus der Delphi Language verschwinden werden oder welche sich ändern. Diese Liste entstammt dem Buch Mastering Delphi 7 von Marco Cantù.

Deprecated Typen
  • Pointer gelten als veraltet. Diese werden unter Umständen noch unterstützt, aber über kurz oder lang verschwinden. Pointer gelten unter .NET als unsafe Types, da deren Typ nicht überprüft werden kann. Pointer-Arithmetik ist verboten.
  • file of <type> wird nicht mehr unterstützt, da die Record-Größe abhängig von der Zielplattform sein kann.
  • Das Schlüsselwort object, welches bis lang noch unterstützt wurde, wird komplett gestrichen - es bleibt nur noch class.
  • Real48 und Comp werden verschwinden. Comp wird dabei durch Int64 ersetzt.
Basis-Typenänderungen
  • String ist in Zukunft ein WideString (16 Bit/Char), nicht mehr AnsiString (8 Bit). String wird auf System.String gemappt. Entsprechend wird Char zu WideChar (16 Bit) anstatt AnsiChar (8 Bit).
  • Records werden als "Value Types" gewertet. (Hm, keine Ahnung, wie das zu verstehen ist :roll:) Neu ist, das Records in Zukunft auch Methoden deklarieren können. Diese müssen als final (neu!) deklariert werden. Vererbung von Records ist weiterhin nicht möglich - es gibt ja Klassen ;-)
  • TDateTime erhält ein neues Format, entsprechend dem .NET System.DateTime. Achtung!, bei allen Umstellungen. Der neue Typ kann Daten vom 01.01.01 00:00:00 bis zum einschließlich 31.12.9999 11:59:00 aufnehmen.
  • Currency wird auf den Typen System.Decimal gemappt - wird also nicht mehr direkt unterstützt.
Deprecated Code Anweisungen
  • Variant Records werden nicht mehr unterstützt, da Typen-Größen Plattformabhängig sind.
  • Der Pointer ExitProc wird nicht mehr unterstützt. Es muss auf initialization und finalization ausgewichen werden!
  • Die dynamische Einbindung von Interfaces via implements wird nicht mehr unterstützt. Argh, habe ich gerade erst kennen und lieben gelernt :roll:
  • Assembler Anweisungen werden nicht mehr unterstützt, da diese Plattform-Abhängig sind.
  • Die Schlüsselwörter automated und dispid entfallen, da diese durch die .NET Struktur nicht mehr benötigt werden.
  • Direkter Zugriff auf Speicher durch Methoden wie BlockRead, BlockWrite, GetMem, FreeMem und ReAllocMem sind nicht mehr möglich.
  • Der @-Operator wird vermutlich verschwinden

Also, wer will, kann auch schon jetzt auf diese Änderungen achten, dann wird die Umsetzung unter .NET einfacher ;-)

...:cat:...

Hansa 23. Jun 2003 10:44

Da werden diejenigen schwer schuften müssen, die hardwarenah programmieren, mit Pointern auf Hardware-Adressen etc. zugreifen, oder knallhart den Speicher selber verwalten mit GetMem usw. :mrgreen: Dasselbe gilt für ASM Befehle. Da das vor allem unter C++ sehr beliebt ist, können die sich warm anziehen. Ich glaube Delphi macht da wesentlich weniger Probleme.

Mir ist das sowieso egal, weil solche Programmiertechniken nur Fehler produzieren (Bluescreens kommen viel durch so was), benutze ich das alles nicht. Das mit dem "FILE OF ..." gefällt mir weniger. Das braucht man schon mal.

Meine schlimmste Befürchtung ist aber, daß in irgendeinem Programm in Zeile 1166 der Compiler streikt und keiner weiß (zumindest vorerst) warum, bzw. was wie anders gemacht werden muß. 8)

Trotzdem ist keine Panik angesagt, die werden schon einigermaßen wissen, wo die Knackpunkte liegen und dementsprechend für Alternativen Sorgen.

P.S.: jetzt habe ich die Frage vergessen: Du schreibst string wäre ein WideString, was ist das im Moment wenn man
Zitat:

VAR st : string
schreibt ? Bzw. für die neuen Typendefinitionen (Datum ja auch), was sollte man da jetzt nehmen, um später nichts verändern zu müssen ?

Christian Seehase 23. Jun 2003 10:53

Moin sakura,

soll das alles eigentlich für Delphi Language oder Delphi Language for .NET gelten?

sakura 23. Jun 2003 10:57

Zitat:

Zitat von Hansa
Bzw. für die neuen Typendefinitionen (Datum ja auch), was sollte man da jetzt nehmen, um später nichts verändern zu müssen ?

Für den String gilt, entweder Du deklarierst den als AnsiString (aktuelle Implementation von String) oder als WideString, die zukünftige Implementation.

Bei TDateTime wird es eine Menge Handarbeit, leider :wall: Da hilft nichts drumrum...

...:cat:...

sakura 23. Jun 2003 10:58

Zitat:

Zitat von Christian Seehase
soll das alles eigentlich für Delphi Language oder Delphi Language for .NET gelten?

Ich denke mal für beide, da kleinere Änderungen bereits jetzt in Delphi 7 vorhanden sind. Für Kylix gilt ja auch die gleiche Sprache.

...:cat:...

Christian Seehase 23. Jun 2003 11:02

Moin sakura,

ich dachte nur daran, dass man im Visual Studio ja mit C# arbeiten kann, bei dem halt gewisse Einschränkungen gegeben sind, oder mit C++ wo das dann nicht der Fall ist.
Man kann ja, wenn auch mit gewissen Verrenkungen, unter C# ganz normal die API Funktionen importieren und damit arbeiten, und die sich ja nicht gerade pointerlos.

Chewie 23. Jun 2003 11:05

Zitat:

Zitat von Sakura
Das Schlüsselwort object, welches bis lang noch unterstützt wurde, wird komplett gestrichen - es bleibt nur noch object.

Ist das ein Schreibfehler oder raff ichs einfach nicht?
Ich denke, so sollte es heißen:
Zitat:

Das Schlüsselwort object, welches bis lang noch unterstützt wurde, wird komplett gestrichen - es bleibt nur noch class

Hansa 23. Jun 2003 11:11

Zitat:

Zitat von sakura
Bei TDateTime wird es eine Menge Handarbeit, leider :wall: Da hilft nichts drumrum...

Wollen die etwa einen neuen Date-Typ bringen, den es noch nicht gibt ? :evil: Na ja, ^QA gibts ja auch noch. Und ich habe vor längerer Zeit mal ein Programm gebastelt, daß den Quelltext nach einem Wort durchsucht und durch ein anderes ersetzt. Anscheinend muß man zu solch rabiaten Mitteln greifen. :spin:

Leider weiß ich den Grund nicht mehr, warum ich ein "^QA" Programm geschrieben habe, hört sich trotzdem langsam nach schlechtem Film an. Vieles wird anders oder entfällt, aber nun die entscheidende Frage: Was ist der Vorteil von dem Firlefanz :?:

sakura 23. Jun 2003 11:38

Zitat:

Zitat von Chewie
Ist das ein Schreibfehler oder raff ichs einfach nicht?
Ich denke, so sollte es heißen:
Zitat:

Das Schlüsselwort object, welches bis lang noch unterstützt wurde, wird komplett gestrichen - es bleibt nur noch class

*Asche auf mein Haupt* Danke, ich habe es im Original korrigiert. :oops:

...:cat:...

sakura 23. Jun 2003 11:40

Zitat:

Zitat von Hansa
Wollen die etwa einen neuen Date-Typ bringen, den es noch nicht gibt ? :evil:

^QA wird Dir leider nicht viel helfen, da der neue Datentyp und der alte Datentyp den gleichen Namen haben, aber leider verschiedenen implementiert sind. Wer aber fleißig die DateTime-Funktionen genutzt hat, der sollte i.A. keine Probleme bekommen, allerdings dürften diejenigen, welche z.B. mit Int und Frac gearbeitet haben leichte Schwierigkeiten bekommen. Näheres schreibe ich, sobald ich es weiß.

...:cat:...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.
Seite 1 von 4  1 23     Letzte »    

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