Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#38

AW: FRITZ!Box Komponente v0.17

  Alt 21. Mai 2017, 23:32
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}
$2B or not $2B

Geändert von himitsu (21. Mai 2017 um 23:44 Uhr)
  Mit Zitat antworten Zitat