Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Umstellung D2007 auf Delphi XE (https://www.delphipraxis.net/155288-umstellung-d2007-auf-delphi-xe.html)

frank1208 16. Okt 2010 13:14

Delphi-Version: XE

Umstellung D2007 auf Delphi XE
 
Hallo Anwesende,
kann mir vielleicht jemand weiter helfen?
ich versuche meine alten Objekte (die bis Delphi 2007 noch wunderbar liefen) nach Delphi XE zu portieren. Leider habe ich schon ein grundsätzliches Problem:

Delphi-Quellcode:
unit meinPackage;

interface

type TMeinObjekt = object

         end;

implementation

end.
Ich erhalte nun die Fehlermeldung:
E1025 Sprach-Feature wird nicht unterstützt: 'Object'

Schiebe ich den Typ in den Implementationteil,
Delphi-Quellcode:
unit meinPackage;

interface

implementation

type TMeinObjekt = object

         end;

end.
klappt es ohne Probleme, was mich natürlich nicht weiterbringt.
Erstelle ich eine Anwendung, dann kann ich die Typ-Definition übrigens in den Interface legen.
Gibt es vielleicht igendeine neue Compiler-Directive?

Für einen Hinweis wäre ich sehr dankbar.

Christian Seehase 16. Okt 2010 13:22

AW: Umstellung D2007 auf Delphi XE
 
Moin Frank,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

So wie es aussieht, wirst Du wohl auf class umstellen müssen.

Schon in der Hilfe von D7 (nicht 2007 :wink:) steht bei Objekttypen der Hinweis:

Zitat:

Object types are supported for backward compatibility only. Their use is not recommended.

DeddyH 16. Okt 2010 13:24

AW: Umstellung D2007 auf Delphi XE
 
Object ist aber schon lange veraltet. Nimm mal class stattdessen.

[edit] Na toll, erst antwortet der Server nicht, und dann kommt kein roter Kasten. [/edit]

frank1208 16. Okt 2010 13:33

AW: Umstellung D2007 auf Delphi XE
 
Erst mal danke für die schnelle Antwort.
Sicher ist Object schon lange veraltet, aber wie heißt es so schön: 'Never change ...'.
Genau diese Umstellung wollte ich eigentlich vermeiden, weil so, außer den materiellen Umstellungskosten (neue Updates von Drittanbietern), auch noch der Zeitaufwand für solche nicht geplante Umstellungen drauf geht.
Aber da muß man wohl durch.:pale:

DeddyH 16. Okt 2010 13:35

AW: Umstellung D2007 auf Delphi XE
 
Ich fürchte, das wird vermutlich das kleinere Deiner Probleme sein, die Umstellung auf Unicode dürfte ggf. mehr Zeit in Anspruch nehmen, je nachdem, wie vorausschauend programmiert wurde.

frank1208 16. Okt 2010 13:57

AW: Umstellung D2007 auf Delphi XE
 
Ich will's nicht hoffen.

Ich hatte meine Objecte (ist leider meine Datenbasis, noch aufbauend auf den guten alten ENZ-Tools) schon am Laufen, als ich Sie nur in einer VCL-Anwendung eingebunden hatte.
Die ganzen WideString-Anbindungen für System-Funktionen beruhen zum Teil nur auf einer Zuweisung der entsprechenden Procedure mit dem Abschluß W (z.B.: CreateFile in DXE CreateFileW und in/bis 2007 CreateFileA). Also biegt man sich das schnell wieder zurecht.

Nur, wenn ich halt die Tools in ein Package einbinden will, meckert XE rum.
Na mal sehen, ob es noch einen genialen Einfall gibt.

Melde mich, wenn ich einen Einfall hatte oder in den glorreichen Weiten was gefunden habe. Muß jetzt erst mal zum Fußball.
:lol:

himitsu 16. Okt 2010 14:07

AW: Umstellung D2007 auf Delphi XE
 
Das Problem ist nicht vieles Unter XE zum laufen zu bekommen.

Man könnte ganz einfach vieles von String>AnsiString PChar>PAnsiChar WinApi>WinApiA umschreiben, aber bei den Delphi-Funktionen wird das schon schwiriger, da diese oftmals nur noch als Unicode existieren.
Es gibt z.B. auch keine TAnsiStringList.

Und wenn man schon Unicode unter XE (2009+) hat (sonst lönnte man ja auch beim 2007 bleiben :roll: ), dann wäre es auch praktisch dieses zu nutzen, weswegen dann nicht einfach nur dem Anpassen der Typen und Funktionsaufrufe genüge getan ist, sondern man teilweise auch die Programmlogik anpassen müßte (vorallem wenn Speicher direkt manipuliert wird. (wilde Pointeroperationen, Move, CopyMemory, ReadFile usw.)

jbg 16. Okt 2010 14:22

AW: Umstellung D2007 auf Delphi XE
 
Zitat:

Zitat von frank1208 (Beitrag 1056088)
ich versuche meine alten Objekte (die bis Delphi 2007 noch wunderbar liefen) nach Delphi XE zu portieren.

Wenn du keine Vererbung bei "object" nutzt, kannst das auf "record" umstellen, die mittlerweile auch Methoden haben dürfen. Auf die alten objects würde ich ganz verzichten, vor allem weil die neueren Compiler fehlerhaften Code generieren, wenn man ein MAKE statt einem BUILD macht.

Aremo 8. Sep 2016 20:10

E1025 Sprach-Feature nicht bekannt: object - AW: Umstellung D2007 auf Delphi XE
 
Umstellen der Sourcen ist nicht zwingend erforderlich.

Die Fehlermeldung "E1025 - Sprach-Feature nicht bekannt: object" erscheint, wenn man vom Compiler zusätzlich C/C++ - Ausgabedateien (Headerdateien etc.) erzeugen läßt, da C/C++ wohl keine Entsprechung zum Object kennt.

Abschalten dieser Meldung unter: Projekt -> (Standard-) Optionen -> Delphi Compiler -> Ausgabe C/C++ -> Erzeugung der C/C++ Datei, wähle: Nur DCUs erzeugen


http://www.delphigear.cn/0/7548/go.aspx

.hpp Header Files:
Starting with XE, and continuing with XE2, the Delphi compiler outputs .hpp header files by default. This is a change from pre-XE releases. For example, if you attempt to import a DLL by ordinal value, the compiler reports "E1025 Language feature not supported" because .hpp generation is not compatible with importing a DLL by ordinal value. However, you can import a DLL by ordinal value if you turn off .hpp generation. Go to the Project > Options > Output - C/C++ page, and for the option C/C++ Output file generation, select a value that does not include headers, such as "Generate DCUs only."

AxelB 4. Jan 2017 12:54

AW: Umstellung D2007 auf Delphi XE
 
Danke für diesen tollen Hinweis!


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 Uhr.

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