AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Compiler. Optimierung EIN => F2084 Interner Fehler: C1907
Thema durchsuchen
Ansicht
Themen-Optionen

Compiler. Optimierung EIN => F2084 Interner Fehler: C1907

Ein Thema von Michael II · begonnen am 12. Dez 2019 · letzter Beitrag vom 17. Dez 2019
Antwort Antwort
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
763 Beiträge
 
Delphi 11 Alexandria
 
#1

Compiler. Optimierung EIN => F2084 Interner Fehler: C1907

  Alt 12. Dez 2019, 17:42
Hallo und guten Abend...

Wenn ich bei meinem Projekt unter "Delphi Compiler > Compilieren" "Optimierung" einschalte, dann kann ich mein Projekt nicht mehr compilieren: F2084 Interner Fehler: C1907. - Nach dem Abbruch zeigt der Cursor auf ein end; einer Prozedur.

Wenn ich die Optimierung ausschalte, klappt es wieder.

Embarcadero schreibt dazu:
http://docwiki.embarcadero.com/RADSt...s%25d_(Delphi)


Hat jemand weitere Tipps?
Michael Gasser
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907

  Alt 12. Dez 2019, 17:49
Projekt bereinigen und/oder Delphi neustarten.

Interne Compiler-Fehler habe ich im Schnitt zehn Stück pro Tag, IDE neustarten oder Projekt bereinigen hat bislang immer geholfen.
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
763 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907

  Alt 13. Dez 2019, 09:44
Hallo schöner Günther

besten Dank für deine Tipps. Weder Bereinigung, Neustart von Windows und Delphi lösen das Problem.

Ich habe die Zeile isoliert, welche den Fehler auslöst:

    hbit.Canvas.pen.color := Winapi.Windows.RGB(hh*25, hh*25, hh*25); // ERR Hingegen funktioniert zum Beispiel:
    hbit.Canvas.pen.color := Winapi.Windows.RGB(hh*20, hh*40, 20); // OK oder es klappt auch wenn ich in der Fehlerzeile zwei der drei RGB Werte durch Konstanten ersetze:
    hbit.Canvas.pen.color := Winapi.Windows.RGB(25, hh*25, 25);
Das Projekt besteht aus vielen Forms/Units.
Es ist dabei egal in welche Unit und wo in der Unit ich diese Test-procedure reinkopiere:

Delphi-Quellcode:
procedure dummydummy;
var hh : integer;
    hbit : VCL.Graphics.TBitMap;
begin
    hbit := VCL.Graphics.TBitmap.Create;
  try
    hh := 1;
    // hbit.Canvas.pen.color := Winapi.Windows.RGB(hh*20, hh*40, 20); // OK
    hbit.Canvas.pen.color := Winapi.Windows.RGB(hh*25, hh*25, 25); // ERR
  finally
    hbit.free;
  end;
end;
Das Verhalten ist immer gleich.
Michael Gasser
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
650 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907

  Alt 13. Dez 2019, 14:24
Ja, das kann ich auch in 10.2 reproduzieren. Einen Weg das zu umgehen gibt es, wenn du nicht direkt an Canvas.pen.color zuweist, sondern den Umweg über eine Variable machst:
Delphi-Quellcode:
procedure dummydummy;
var hh : Integer;
    RGBColor: Cardinal;
    hbit : VCL.Graphics.TBitMap;
begin
    hbit := VCL.Graphics.TBitmap.Create;
  try
    hh := 1;
    RGBColor := Winapi.Windows.RGB(hh*25, hh*25, 25); // ERR
    hbit.Canvas.pen.color := RGBColor;
  finally
    hbit.free;
  end;
end;
Dieser Code kompiliert fehlerfrei. Ich denke das ist ein Fall für einen Bugreport.
  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
 
#5

AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907

  Alt 13. Dez 2019, 14:55
Das könnte damit zusammenhängen, daß RGB zum Einen inline ist und zum Anderen ein COLORREF (=DWORD) zurückliefert, von TPen.Color aber ein TColor (-$7FFFFFFF-1..$7FFFFFFF) erwartet wird, was ein vorzeichenbehafteter Typ ist.

Das mit dem Bugreport ist eine gute Idee. Insbesondere da der Testcase relativ einfach ist.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
763 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907

  Alt 14. Dez 2019, 09:43
Besten Dank für die Tests mit 10.2 und für den Hinweis zu TColor, RGB.

Mit "Projektoptionen > Compiler > MSI Build extern...=TRUE" funktioniert's übrigens in allen Fällen.

Ich erwarte, dass der Compiler bei Zuweisung RGB -> TColor höchstens eine Meldung ausgibt.

Konsequent ist anders: Beim Code unten läuft der Compiler (Optimierung=TRUE) nicht in einen F2084.

Delphi-Quellcode:
procedure TForm169.FormCreate(Sender: TObject);
var hh : integer;
begin
  hh := 1;
  color := RGB( hh*25, hh*25, hh*25 );
end;
Michael Gasser
  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
 
#7

AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907

  Alt 14. Dez 2019, 11:26
Konsequent ist anders: Beim Code unten läuft der Compiler (Optimierung=TRUE) nicht in einen F2084.
Ich bezweifle, daß der Fehler mit Absicht eingebaut wurde. In sofern ist Konsequenz in diesem Zusammenhang auch nicht zu erwarten.

Das zeigt aber auch wieder mal, wie wichtig konkrete, reproduzierbare Testfälle sind.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
650 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907

  Alt 17. Dez 2019, 11:56
Ich erwarte, dass der Compiler bei Zuweisung RGB -> TColor höchstens eine Meldung ausgibt.
Wie von Uwe schon geschrieben, ist das keine Absicht, dass das nicht geht, sondern ein Fehler im Compiler. Dein originaler Code ist absolut korrekt und muss so ohne Fehler laufen. Das führt hier aber für den Compiler in einen unerwarteten Zustand (vermutlich durch das inline von RGB) und führt daher zu eine internen Fehler des Compilers.

Du solltest dafür unbedingt einen QC Bug-Report erstellen.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: Compiler. Optimierung EIN => F2084 Interner Fehler: C1907

  Alt 17. Dez 2019, 15:14
Ich war mal so frei: https://quality.embarcadero.com/browse/RSP-27251
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:16 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