Alle fast alle Delphi-Units heißen inzwischen anders, aber standardmäíg hat man in neuen Projekten den fehlenden Namespace definiert (vorallem
System. Vcl. und WinApi.
).
Forms =
Vcl.Forms
SysUtils = System.SysUtils
usw.
Als Erstes solltes du lernen, was Compiler-Direktiven sind.
Dieser Code wurde für Delphi und Lazarus geschrieben und je nach Compiler und CompilerVersion wird unterschiedlicher Code verwendet.
Delphi-Quellcode:
{$IfDef VER260}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf} {Delphi XE5}
{$IfDef VER250}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf} {Delphi XE4}
{$IfDef VER240}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf} {Delphi XE3}
...
{$IfDef VER80}{$Define DELPHI} {$EndIf} {Delphi 1}
interface
uses
Classes, SysUtils, Windows, WinSock, Dialogs, ExtCtrls, Forms, StdCtrls, Graphics,
{$IfDef DELPHI}Jpeg, Messages, XMLIntf, XMLDoc
{$Else}Controls,
Dom, XMLRead
{$EndIf};
Und schon würde bestimmt schnell auffallen, dass dein Problem im Bereich "Prüfung auf Delphiversionen" liegt.
Der fehlende Teil:
Delphi-Quellcode:
{$IfDef VER320}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf} {Delphi XE10.2}
{$IfDef VER310}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf} {Delphi XE10.1}
{$IfDef VER300}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf} {Delphi XE10}
{$IfDef VER290}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf} {Delphi XE8}
{$IfDef VER280}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf} {Delphi XE7}
{$IfDef VER270}{$Define DELPHI}{$Define DELPHI_XE2_UP}{$EndIf} {Delphi XE6}
Nja, aus solchen Grüden nutze ich in meinen Codes eine die entsprechenden Conditional-Expressions ala
{$IF CompilerVersion >= 23.0}
für
{$DEFINE DELPHI_XE2_UP}
, was auch in zukünftigen Delphis passen wird, im Gegensatz zu den
{$IFDEF VER230}
-Orgien.
Aber am Liebsten prüfe ich möglichst auf benötigte Compiler-Features und Deklarationen, anstatt auf irgendwelche Compiler-Versionen, da es "eindeutiger", verständlicher und vorallem versionsunabhängig ist.
Delphi-Quellcode:
uses {$IFDEF FPC}Controls,
Dom, XMLRead
{$ELSE}Jpeg, Messages, XMLIntf, XMLDoc
{$ENDIF} // FreePacal und seit XE gibt es im Delphi auch "DCC"
{$IF Declared(RawByteString)}RawByteString
{$ELSE}AnsiString
{$IFEND}