AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE System.JSON System enthält kein Element names JSON (XE8))

System.JSON System enthält kein Element names JSON (XE8))

Ein Thema von leonreiser · begonnen am 31. Okt 2016 · letzter Beitrag vom 3. Nov 2016
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#1

AW: System.JSON System enthält kein Element names JSON (XE8))

  Alt 3. Nov 2016, 17:08
Aber ich bin mehr für Größer/Kleiner-Vergleiche oder besser noch für sprechende Bezeichner.
user AndereUnits, {$IF CompilerVersion <= 290} XE8Units {$ELSE} XE10Units {$ENDIF};
user AndereUnits, {$IF CompilerVersion <= DelphiXE8} XE8Units {$ELSE} XE10Units {$ENDIF};
user AndereUnits, {$IFDEF DelphiXE8AndLower} XE8Units {$ELSE} XE10Units {$ENDIF};
Letzte Beiden geht leider nur mit Fremdcode, da Delphi diesbezüglich keine sprechenden DEFINES bereitstellt.
Wie sollte ein Compiler für XE7 oder vorher, bei dem CompilerVersion < 290 ist, denn ein Define für DelphiXE8 oder DelphiXE8AndLower bereitstellen? Der aktuelle Compiler kann ja auch nicht wissen, wie die Version in drei Jahren heißen wird.

Alternativ kann man aber die fehlenden Units auch einfach als leere Dummy-Units anlegen. Dann ist der Compiler auch zufrieden und man spart sich die IFDEFS. (Habe ich schon erwähnt, daß IFDEFs in uses-Anweisungen eine Erfindung des Teufels sind?)

Man kann auch für die fehlenden Units Unit-Aliase im XE8-Projekt anlegen, die dann alle auf System.JSON verweisen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: System.JSON System enthält kein Element names JSON (XE8))

  Alt 3. Nov 2016, 18:17
Nee, das nicht, aber man kann problemlos die "Versionskonstanten" der nächsten 2, 3, 4 oder mehr Jahre vorbelegen
und zwar entweder eine Nummer größer als man selber oder besser noch mit einer ganz großen Nummer wie z.B. 666.0

Alles was größer ist als ich muß ich nicht ganz genau kennen ... es ist so oder so immer größer und um wie viel größer ist eigentlich egal.

Man könnte auch bestimmte Versionsnummern erraten, aber das geht dann schief, wenn mal wieder jemand da dran rumspielt.
Zwischennummern für Majorversionen oder Versionen überspringen, wie es zweimal mit Version 13 gemacht wurde.
Delphi 10.3 wird vermutlich Compilerversion 33.0 und Produktversion 26.0, bzw. IDE-Version 20.0, da die 10.1 eine 31.0/24.0/18.0 ist.
Aber Delphi 2009 war Produktversion 12.0 und 2010ist eine 14.0, weil man Angst vor der 13 hatte.
Oder auch XE8 zu DX10, bzw. Windows 8 und Windows 10 ....


Das einzige Problem ist dabei nur, wenn man auf die geile Idee kommt und das Benamungsschema ständig ändert.

Aber Emba kann auch einfach seine Möglichkeiten nutzen und soeine Editions-Liste/Unit in die Versionsverwaltung legen, welche auch ältere Delphis als "Update" bekommen könnten. (GetIt, bzw. Git/SVN, wo auch schon die Demos liegen)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Nov 2016 um 18:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.961 Beiträge
 
Delphi 12 Athens
 
#3

AW: System.JSON System enthält kein Element names JSON (XE8))

  Alt 3. Nov 2016, 18:33
Man braucht doch gar keine Versionskonstanten für zukünftige Versionen, es würde ja reichen, wenn so etwas ginge:
Delphi-Quellcode:
{$IFDEF DelphiXE8OrHigher}
...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: System.JSON System enthält kein Element names JSON (XE8))

  Alt 3. Nov 2016, 18:43
Jain.

Wenn du Fremdkomponenten und Quellcode auch in älteren Delphis nutzen willst, dann eventuell schon.

Ein DEFINE Delphi10_5OrHigher wäre egal, wenn es dein XE8 nicht kennt,
aber ein Delphi10OrLower wäre da schon besser, da es XE8 mit einschließt.


Wie gesagt, ich verwende lieber Vergleiche statt DEFINES,
da kann man auch mal ein schönes {$IF (CompilerVersion >= DelphiXE2) and (CompilerVersion <= DelphiXE5)} ... {$ENDIF} machen.

Und wenn ich Delphi 10.4 bis sonstas mit Version 99.9 vordefiniere, kommen auch alte Delphis damit klar, selbst wenn die Unit paar Jahre nicht upgedated wurde.


Zitat:
Habe ich schon erwähnt, daß IFDEFs in uses-Anweisungen eine Erfindung des Teufels sind?
Eigentlich gibt es immer nur Probleme in der DPR damit, weil Delphi und Addons/GExperts/CnPack da zwar gern drin zumschreiben, aber dabei leider ständig Defines und sogar Kommentare geschrottet werden, wie bei fast allem Anderen in der DPR auch.
Angehängte Dateien
Dateityp: pas h5u.Consts.pas (8,1 KB, 1x aufgerufen)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Nov 2016 um 18:56 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz