Einzelnen Beitrag anzeigen

Maekkelrajter

Registriert seit: 8. Mär 2017
Ort: Köln
156 Beiträge
 
Delphi 12 Athens
 
#1

Problem mit Delphi 12 CE mit überladenen Funktionen

  Alt 31. Jul 2024, 13:15
Gestern habe ich die Delphi 12 CE installiert. Die Installation verlief problemlos. Als Erstes habe ich mein aktuelles Projekt geladen und versucht zu compilieren. Dieses Projekt verwendet die Jedi Code Library, was bisher (Delphi 11.3 CE) problemlos funktionierte. Leider in tritt mit der D12 CE ein Fehler in der Unit JclGraphUtils auf:
Delphi-Quellcode:
procedure CMYKToBGR(const Source, Target: Pointer; const BitsPerSample: Byte; Count: Cardinal); overload;
var
  R, G, B, K: Integer;
  I: Integer;
  SourcePtr: PCMYK;
  SourcePtr16: PCMYK16;
  TargetPtr: PByte;
begin
  case BitsPerSample of
    8:
      begin
        SourcePtr := Source;
        TargetPtr := Target;
        Count := Count div 4;
        for I := 0 to Count - 1 do
        begin
          K := SourcePtr.K;
          R := 255 - (SourcePtr.C - MulDiv(SourcePtr.C, K, 255) + K);
          G := 255 - (SourcePtr.M - MulDiv(SourcePtr.M, K, 255) + K);
          B := 255 - (SourcePtr.Y - MulDiv(SourcePtr.Y, K, 255) + K);
          TargetPtr^ := Max(0, Min(255, Byte(B)));// Fehler 'Doppeldeutiger überladener Ausdruck' (Max und Min)
          Inc(TargetPtr);
          TargetPtr^ := Max(0, Min(255, Byte(G)));// Fehler 'Doppeldeutiger überladener Ausdruck' (Max und Min)
          Inc(TargetPtr);
          TargetPtr^ := Max(0, Min(255, Byte(R)));// Fehler 'Doppeldeutiger überladener Ausdruck' (Max und Min)
          Inc(TargetPtr);
          Inc(SourcePtr);
        end;
      end;
    16:
      begin
        SourcePtr16 := Source;
        TargetPtr := Target;
        Count := Count div 4;
        for I := 0 to Count - 1 do
        begin
          K := SourcePtr16.K;
          R := 255 - (SourcePtr16.C - MulDiv(SourcePtr16.C, K, 65535) + K) shr 8;
          G := 255 - (SourcePtr16.M - MulDiv(SourcePtr16.M, K, 65535) + K) shr 8;
          B := 255 - (SourcePtr16.Y - MulDiv(SourcePtr16.Y, K, 65535) + K) shr 8;
          TargetPtr^ := Max(0, Min(255, Byte(B)));// Fehler 'Doppeldeutiger überladener Ausdruck' (Max und Min)
          Inc(TargetPtr);
          TargetPtr^ := Max(0, Min(255, Byte(G)));// Fehler 'Doppeldeutiger überladener Ausdruck' (Max und Min)
          Inc(TargetPtr);
          TargetPtr^ := Max(0, Min(255, Byte(R)));// Fehler 'Doppeldeutiger überladener Ausdruck' (Max und Min)
          Inc(TargetPtr);
          Inc(SourcePtr16);
        end;
      end;
    else
      raise EColorConversionError.CreateResFmt(@RsBitsPerSampleNotSupported, [BitsPerSample]);
  end;
end;
Die Funktionen Max() und Min(), die in system.math deklariert sind, erzeugen den Fehler 'Doppeldeutiger überladener Ausdruck', unter 11.3 CE gab es das Problem nicht.
Gibt es womöglich in der D12 IDE eine Einstellung, mit der man das beeinflussen kann?


Gruß LP
  Mit Zitat antworten Zitat