AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls JCL und JVCL in 10.3 CommunityEdition installieren geht nicht
Thema durchsuchen
Ansicht
Themen-Optionen

JCL und JVCL in 10.3 CommunityEdition installieren geht nicht

Ein Thema von DieDolly · begonnen am 21. Nov 2018 · letzter Beitrag vom 24. Nov 2018
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#41

AW: JCL und JVCL in 10.3 CommunityEdition installieren geht nicht

  Alt 22. Nov 2018, 09:21
Eigentlich dürfte der nicht übernommen werden, denn du verwendest {$ifend} anstatt {$ENDIF} und das kann nicht jeder Compiler.
Sollte das nicht innerhalb des IFDEF für Delphi 2009 gehen? Ich habe keine alte Version zum Testen...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: JCL und JVCL in 10.3 CommunityEdition installieren geht nicht

  Alt 22. Nov 2018, 09:41
denn du verwendest {$ifend} anstatt {$ENDIF} und das kann nicht jeder Compiler.
Sollte das nicht genau andersherum heißen? Delphi-Compiler vor XE4 verstehen kein $ENDIF als Abschluss für $IF, aber $IFEND verstehen alle (ab Delphi 6 natürlich, vorher gab es kein $IF).
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#43

AW: JCL und JVCL in 10.3 CommunityEdition installieren geht nicht

  Alt 22. Nov 2018, 14:57
So war meine Erinnerung auch, aber mit alten Versionen habe ich schon länger nichts mehr gemacht, von daher möchte ich mich da nicht festlegen...
Kann das vielleicht jemand testen?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#44

AW: JCL und JVCL in 10.3 CommunityEdition installieren geht nicht

  Alt 22. Nov 2018, 15:32
Da haben wir es - ja, irgendwas war da ...

http://docwiki.embarcadero.com/RADSt...o/en/Compiling
Zitat:
Require $IF to be terminated by $IFEND Enables you to use $IFEND (instead of the proper $ENDIF ) to terminate a $IF clause. Without this option enabled, the compilers might emit E2029. See the Legacy IFEND (Delphi) compiler directive.

Default = False
http://docwiki.embarcadero.com/RADSt...IFEND_(Delphi)
Zitat:
Allows you to require the $IFEND directive in order to close the associated $IF statement in your code.

At the XE4 release, the Delphi compilers were changed to accept either $IFEND or $ENDIF to close $IF statements. Before XE4, only $IFEND could be used to close $IF statements. The $LEGACYIFEND directive allows you to restore the old behavior, which is useful if your code is emitting E2029 related to nested $IF and $IFDEF statements.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#45

AW: JCL und JVCL in 10.3 CommunityEdition installieren geht nicht

  Alt 23. Nov 2018, 21:18
Die Änderungen sind jetzt übrigens gemerged, das normale JVCL Repository sollte nun fehlerfrei kompilieren, tut es hier zumindest überall.

Da Du schon zum wiederholten Male dieses Thema ansprichst ohne Code zu zeigen, wäre ich an einer Implementation interessiert, die ohne $IF oder Conditional Expressions auskommt, sprich die alle Versionen von TP5 bis Delphi Rio und FPC331 (in allen Modi) unterstützt (selbst die allerneueste FPC Version 3.3.1 kennt zB kein Result im Default-Modus).
Ich arbeite nur mit Delphi, da ist es sehr einfach:
https://github.com/jaenicke/MTCL/blo...erVersions.inc
Ich habe einmal eine umfangreichere Variante erstellt, die kann ich allerdings nicht veröffentlichen. Vielleicht schreibe ich so etwas aber noch einmal privat und richtig sauber.
Sebastian Jänicke
AppCentral

Geändert von jaenicke (23. Nov 2018 um 21:21 Uhr)
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#46

AW: JCL und JVCL in 10.3 CommunityEdition installieren geht nicht

  Alt 23. Nov 2018, 23:13
Ich arbeite nur mit Delphi, da ist es sehr einfach:
https://github.com/jaenicke/MTCL/blo...erVersions.inc
Danke für den Link. Aber neben Eindruck, dass das ziemlich verschachtelt ist, sehe ich auf den ersten Blick nicht wie es gegen unbekannte Versionen helfen kann (oder übersehe ich da was Offensichtliches?)

Nehmen wir an, ich habe die Includedatei in einem Archiv, das zu Zeiten von XE veröffentlicht wurde. Wenn jemand, das jetzt mit Rio übersetzt, ist Rio doch nicht bekannt, und auch nicht die speziellen nötigen Anpassungen (ich denke zB an Auslesen des DecimalSeparator).

Ich kann natürlich ein Rio-Version der INC veröffentlichen, aber das ist genau das, was ich ja auch so mache.

Meine INC ist nicht so sehr auf Versionen konzentriert sondern auf Features, wie zB sind Unit-Scopes vorhanden, sind Typecasts für Fließkommakonstanten erlaubt etc.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: JCL und JVCL in 10.3 CommunityEdition installieren geht nicht

  Alt 24. Nov 2018, 00:42
Nehmen wir an, ich habe die Includedatei in einem Archiv, das zu Zeiten von XE veröffentlicht wurde. Wenn jemand, das jetzt mit Rio übersetzt, ist Rio doch nicht bekannt, und auch nicht die speziellen nötigen Anpassungen (ich denke zB an Auslesen des DecimalSeparator).
Ich habe die besten Erfahrungen gemacht, wenn ich die bedingten Abschnitte auf die alten Versionen beziehe. Z.B. gibt es die function GetProductVersion in System.Sysutils.pas erst ab Delphi 10 Seattle. Damit der Code auch in älteren Versionen funktioniert, gibt es an geeigneter Stelle folgende Sequenz:
Delphi-Quellcode:
{$IF RTLVersion < 30.0 Seattle}
function GetProductVersion(const AFileName: string; var AMajor, AMinor, ABuild: Cardinal): Boolean;
var
  FileName: string;
  InfoSize, Wnd: DWORD;
  VerBuf: Pointer;
  FI: PVSFixedFileInfo;
  VerSize: DWORD;
begin
  Result := False;
  // GetFileVersionInfo modifies the filename parameter data while parsing.
  // Copy the string const into a local variable to create a writeable copy.
  FileName := AFileName;
  UniqueString(FileName);
  InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd);
  if InfoSize <> 0 then
  begin
    GetMem(VerBuf, InfoSize);
    try
      if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf) then
        if VerQueryValue(VerBuf, '\', Pointer(FI), VerSize) then
        begin
          AMajor := HiWord(FI.dwProductVersionMS);
          AMinor := LoWord(FI.dwProductVersionMS);
          ABuild := HiWord(FI.dwProductVersionLS);
          Result:= True;
        end;
    finally
      FreeMem(VerBuf);
    end;
  end;
end;
{$IFEND}
Ein anderes Beispiel aus PngComponents. Die Klasse TPngImage gibt es erst seit Delphi 2009 (vorher hieß es TPNGObject) und der Code läuft nur unter Delphi 7 und höher. Daher gibt es dort folgende Sequenz:
Delphi-Quellcode:
{$IF RTLVersion < 20.0 D2009 }
  {$IF RTLVersion < 15.0 D7 }
    PngComponents are only compatible with Delphi 7 and higher!
  {$IFEND}
type
  TPngImage = TPNGObject;
{$IFEND}
Hier noch ein paar Auszüge aus dem Project Magician:
Delphi-Quellcode:
function CompareNatural(const Key1, Key2: string): Integer;
{$IF RTLVersion < 27.0 XE6}
  function CheckCfg(const Key: string; out idx: Integer): Boolean;
  const
    cCfg = 'Cfg_';
  begin
    Result := StartsStr(cCfg, Key) and TryStrToInt(Copy(Key, 5), idx);
  end;

var
  idx1: Integer;
  idx2: Integer;
{$IFEND}
begin
{$IF RTLVersion < 27.0 XE6 }
  if CheckCfg(key1, idx1) and CheckCfg(key2, idx2) then begin
    Result := CompareValue(idx1, idx2);
  end
  else begin
    result := CompareText(key1, key2);
  end;
{$ELSE}
  Result := string.Compare(Key1, Key2, [coDigitAsNumbers, coIgnoreCase]);
{$IFEND}
end;
Delphi-Quellcode:
class function TCustomProjFile.GetKnownPlatforms: TArray<string>;
begin
  if FKnownPlatforms = nil then begin
    FKnownPlatforms := TArray<string>.Create(
      'Win32', 'Win64', 'OSX32', 'iOSSimulator', 'Android'
      {$IF RTLVersion < 29.0 XE8 }
      , 'iOSDevice'
      {$ELSE}
      , 'iOSDevice32', 'Linux64', 'iOSDevice64'
      {$ENDIF}
      );
  end;
  result := FKnownPlatforms;
end;
Delphi-Quellcode:
      if not moduleIsPackage and AConfig.ClearChildAppSettings then begin
        { only base platform configurations have app settings and must keep them }
        if Arg.Parent.Key = buildConfiguration.Key then Exit;

        Arg.Remove(sOutputExt);
        Arg.Remove(sIcon_MainIcon);
        Arg.Remove(sIcns_MainIcns);
        Arg.Remove(sManifest_File);
        {$IF RTLVersion >= 30.0 Seattle}
        Arg.Remove(sAppEnableRuntimeThemes);
        Arg.Remove(sAppEnableHighDPI);
        Arg.Remove(sAppEnableAdministrator);
        Arg.Remove(sCustom_Styles);
        {$ENDIF}
      end;

Alle diese Konstrukte benötigen nicht die tatsächlichen VERxxx Bedingungen und compilieren in der Regel ohne Änderungen auf einer neuen Delphi Version. Deswegen kommen die Projekte auch ohne sowas wie die JEDI.inc oder COMPILERS.inc oder wie sie alle heißen aus.

Wenn irgendwas mit einer neuen Version nicht compiliert, wird die aktuelle Version des betreffenden Codes in ein passendes $IF-Konstrukt eingepackt, das den neuen Compiler und alle zukünftigen ausschließt und der verbleibende Code wird für den neuen Compiler angepasst, gegebenenfalls im ELSE Teil. Damit habe ich wieder für die nächsten Jahre Ruhe.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#48

AW: JCL und JVCL in 10.3 CommunityEdition installieren geht nicht

  Alt 24. Nov 2018, 05:10
Ja, das mache ich intern auch so. Dass man da die Delphiversionen einfach so dahinter schreiben kann ohne dass es die Funktionalität beeinträchtigt, wusste ich nicht. Ich habe die eigenen Konstanten auch aus Gründen der Lesbarkeit benutzt und zudem in einer anderen Version eben auch noch bestimmte Features als DEFINE angeboten um so darauf direkt prüfen zu können ohne jedesmal zu überlegen wo es das noch einmal gab.

Ich arbeite nur mit Delphi, da ist es sehr einfach:
https://github.com/jaenicke/MTCL/blo...erVersions.inc
Danke für den Link. Aber neben Eindruck, dass das ziemlich verschachtelt ist, sehe ich auf den ersten Blick nicht wie es gegen unbekannte Versionen helfen kann (oder übersehe ich da was Offensichtliches?)
Jetzt bei 10.3 spuckt das Ding einfach aus Delphi10TokyoUp.

// EDIT:
Ich habe 10.3 mal auch direkt hinzugefügt.
Sebastian Jänicke
AppCentral

Geändert von jaenicke (24. Nov 2018 um 06:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: JCL und JVCL in 10.3 CommunityEdition installieren geht nicht

  Alt 24. Nov 2018, 10:29
Dass man da die Delphiversionen einfach so dahinter schreiben kann ohne dass es die Funktionalität beeinträchtigt, wusste ich nicht.
Das habe ich auch nur durch Zufall herausgefunden. Der Compiler hört einfach nach dem Erkennen einer Floatzahl auf und überliest den Rest bis zur schließenden Kommentarklammer. Das manuelle Einfügen des Klartextes ist in der Regel auch kein Problem, da man in dem Moment ja genau weiß, warum man das tut und welche Delphi-Version betroffen ist.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
947 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#50

AW: JCL und JVCL in 10.3 CommunityEdition installieren geht nicht

  Alt 24. Nov 2018, 10:31
So habe alles artig herunter geladen und installiert.
Nach Abschluss kam allerdings die Warnung im Anhang.
Miniaturansicht angehängter Grafiken
jvcl_warning.png  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


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 22:56 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